1

我需要你们帮我解决这个逻辑。我希望我的程序检查用户注册时是否已经使用了用户名或电子邮件。我有一个正常工作的数据库,但是当我设置这个代码时,我的终端返回这个:

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

这是我的注册烧瓶路线:

@app.route("/register", methods=["GET", "POST"])
def register():
    if request.method == "GET":
        return render_template("register.html")
    if request.method == "POST":
        user = User(name=request.form.get("name"), username=request.form.get("username"), email=request.form.get("email"), password=generate_password_hash(request.form.get("password")))
        existing_mail = User.query.filter_by(email=request.form.get("email")).first()
        existing_username = User.query.filter_by(username=request.form.get("username")).first()
        if existing_mail and existing_username is None:
            db.session.add(user)
            db.session.commit()
            login_user(user)
            session["user_id"] = user
            flash("Registered!")
            return render_template("login.html")
        elif existing_mail is not None:
            flash('Email already exists.')
            return render_template("register.html")
        elif existing_username is not None:
            flash('Username already exists.')
            return render_template("register.html")

这就是我认为代码应该做的:如果邮件和用户名都返回 None,这意味着我的数据库上没有电子邮件和用户名匹配,所以我可以创建那个用户。否则,如果它没有返回任何值,则意味着我的数据库上已经有一些匹配的值,所以我应该闪现一个错误。我不知道为什么我会收到这个错误。提前致谢

4

1 回答 1

0

这可能是因为您在该函数中没有默认模板。如果您的 if 案例都不为真,则该函数将简单地结束(并返回None)。尝试

@app.route("/register", methods=["GET", "POST"])
def register():
    if request.method == "GET":
        return render_template("register.html")
    if request.method == "POST":
        user = User(name=request.form.get("name"), 
        # code
    return render_template("register.html")
于 2020-04-09T21:49:34.170 回答