至此,我已经完成了买入、报价、注册、索引功能。当我第一次编写注册函数时,一切正常,但是当我编写其余部分,然后返回尝试用新用户名注册时,我收到了 500 内部服务器错误。
这是我在app.py中的注册函数
@app.route("/register", methods=["GET", "POST"])
def register():
"""Register user. FIRST"""
#Forget any user_id
session.clear()
#User reached route via POST (as by submitting a form via POST)
if request.method == "POST":
#Ensure username was submitted
if not request.form.get("username"):
return apology("must provide username", 400)
#Ensure password was submitted
elif not request.form.get("password"):
return apology("must provide password", 400)
#Ensure password confirmation was submitted
elif not request.form.get("confirmation"):
return apology("must confirm password", 400)
#Ensure password and confirmation match
elif request.form.get("password") != request.form.get("confirmation"):
return apology("passwords do not match", 400)
#Query database for username
rows = db.execute("SELECT * FROM users WHERE username = ?", request.form.get("username"))
#Ensure username does not already exist
if len(rows) != 0:
return apology("username already exists", 400)
#Insert new user into database
db.execute("INSERT INTO users (username, hash) VALUES(?, ?)",
request.form.get("username"), generate_password_hash(request.form.get("password")))
#Query database for newly inserted user
row = db.execute("SELECT * FROM users WHERE username = ?",request.form.get("username"))
#Remember which user has logged in
session["user_id"] = rows[0]["id"]
#Redirect user to homepage
return redirect("/")
#User reached route via GET (as by cliking a link or via redirect)
else:
return render_template("register.html")
任何帮助将不胜感激,如果您需要其他函数或文件来解决此问题,请告诉我,谢谢!
这表示
session["user_id"] = rows[0]["id"]
行复数。前面的行将 sql 结果设置为行单数。在文档(或课件或我的记忆)中的某处提到,如果插入的表具有整数主键,则 insert
查询将返回分配的键。您可以使用该返回值并节省一两步。