sqlite TypeError:视图函数未返回有效响应, flask

6vl6ewon  于 2023-05-18  发布在  SQLite
关注(0)|答案(1)|浏览(134)

所以,我做了一个网站,使博客。它一直给我错误:

TypeError: The view function for 'createblog' did not return a valid response. The function either returned None or ended without a return statement.

但问题是在我的python代码中,我的createblogs路由结构如下:

@app.route("/createblog", methods=["POST"])
def createblog():
    title = request.args.get("title")
    description = request.args.get("description")
    content = request.args.get("content")
    username = request.args.get("username")
    password = request.args.get("password")

    if not title or not description or not content or not username or not password:
        return

    cursor.execute("INSERT INTO blogs (poster_id, title, description, content) VALUES ((SELECT id FROM users WHERE username=? AND password=?), ?, ?, ?)", (username, password, title, description, content))
    connection.commit()

    return jsonify(status=200)

如你所见,我有return jsonify(status=200)。这真的很奇怪,因为我用了同样的技巧登录,而且成功了!

@app.route("/register", methods=["POST"])
def register():
    username = request.form.get("username")
    password = request.form.get("password")

    print(username, password)

    if not username or not password:
        return

    cursor.execute(
        "INSERT INTO users (username, password) VALUES (?, ?)", (username, password))
    connection.commit()

    return jsonify(status=200)

我的javascript AJAX 代码:

const xhttp = new XMLHttpRequest();
            const postObject = {
                username: username.value,
                password: password.value,
                title: title.value,
                description: description.value,
                content: content.value,
            }
            const post = JSON.stringify(postObject);
            xhttp.open("POST", "/createblog", true);
            xhttp.setRequestHeader("Content-Type", "application/json");
            xhttp.send(post);

我已经排除了所有其他原因(例如:HTML)与此问题无关。非常感谢帮助!
我试图重新启动我的开发服务器,希望这会改变一些事情,但没有!这个问题一直存在。然后我试着在stackoverflow上发布一个查询,希望隧道中的光在这个比喻中是对我给出的问题的解释。

f4t66c6m

f4t66c6m1#

你试过在你的createblog函数中打印用户名,密码,标题,描述,内容吗?如错误所述,您将返回None,这意味着您的一个not条件被触发。为了解决这个问题,在 AJAX 请求中,您可以进行一些验证,以确保任何字段的.value不为null。你也可以在后台进行验证。希望这能帮上忙。
对于将来的请求,包含其他信息(如发送到后端的示例有效负载)将很有帮助。很难重现错误并提供其他帮助。

相关问题