【问题标题】:Strange TypeError: The function either returned None or ended without a return statement奇怪的类型错误:函数返回 None 或没有返回语句结束
【发布时间】:2020-08-06 15:54:50
【问题描述】:

我正在发送电子邮件以恢复用户密码,当用户单击链接时,他可以编写新密码。这是在 Flask 中运行的函数:

@app.route("/forgotT/<tokenn>", methods=["GET", "POST"])
def reset_password(tokenn):
    if request.method == "POST":
        email = s.loads(tokenn, max_age=86400)
        user = User.query.filter_by(email=email).first()
        if request.form.get("newpa") != request.form.get("confirmpa"):
            flash("Passwords dont match")
            return render_template("forgotT.html")
        else:
            newpassword=generate_password_hash(request.form.get("newpa"))
            user.password = newpassword
            db.session.commit()
            flash("Password changed")
            return render_template("login.html")

现在的问题是,当我第一次输入链接并尝试更改我的密码时,我收到了这种类型的错误,但是如果我第二次再次输入链接并尝试更改密码,密码正确更改没有任何问题。知道为什么会发生这种情况吗?

【问题讨论】:

    标签: python email web flask


    【解决方案1】:

    您的路线接受 2 种方法:GETPOST

    GET 的情况下,您的 if 语句为 False 并且没有返回任何内容,引发错误 .

    POST 的情况下,一切正常,因为您总是返回一些东西。

    【讨论】:

    • 那么我应该添加一个 get 处理程序还是应该删除该选项?
    • 另外,为什么我在发出发布请求时会收到此错误?不应该是我提出 get 请求的时候吗?
    • 您希望通过 get 方法访问此页面吗?如果是,处理GET的情况,如果不是,删除它。
    • 对于您的第二条评论,请使用堆栈跟踪编辑您的帖子,否则我无法知道问题所在。
    猜你喜欢
    • 2011-10-26
    • 2022-09-30
    • 1970-01-01
    • 2020-06-20
    • 2019-09-07
    • 2021-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多