我需要你们帮我这个逻辑。我想让我的程序检查用户注册时是否已经使用了用户名或电子邮件。我的数据库运行正常,但是设置此代码后,终端将返回以下信息:
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,则意味着数据库中没有匹配的电子邮件和用户名,因此我可以创建该用户。否则,如果不返回任何值,则意味着我的数据库中已经存在一些匹配的值,因此我应该刷新一个错误。我不知道为什么我得到这个错误。预先感谢
答案 0 :(得分:0)
可能是因为该函数中没有默认模板。如果所有情况都不成立,则函数将简单结束(并返回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")