我正在尝试为网站创建注册页面。用户查看的表单非常简单,并且我之前已经实现过,所以我认为情况并非如此。
但是,我遇到的麻烦是让用户输入信息,对密码进行哈希处理,然后使用SQL将密码和所有其他数据插入到表中。我也有条件,例如,如果用户不是唯一的,或者字段中未键入任何内容。
当我运行flask run时,会出现500错误。事实是,当html代码对我来说不是什么新鲜事物,而对python代码而言,我为什么会收到此错误?
这是我写的:
register.html:
{% extends "layout.html" %}
{% block title %}
Register
{% endblock %}
{% block main %}
<form action="/register" method="post">
<input type="text" name="email" placeholder="email"><br>
<input type="text" name="username" placeholder="username"><br>
<input type="text" name="password" id="pass" placeholder="password"><br>
<input type="text" name="confirm" id="confirm" placeholde="confirm"><br>
<pre> </pre>
<input type="submit" value= "Submit Form">
</form>
{% endblock %}
application.py:
@app.route("/register", methods=["GET", "POST"])
def register():
"""Register user"""
if request.method == "POST":
#if input isn't typed
if not request.form.get("username"):
return render_template("failuser.html")
if not request.form.get("password"):
return render_template("failpass.html")
if not request.form.get("confirm"):
return render_template("failpass.html")
if request.form.get("password") != request.form.get("confirm"):
return render_template("failpass.html")
#if username already exists
rows = db.execute("SELECT * FROM users WHERE username =: username" ,request.form.get("username"))
if len(rows) >= 1:
return render_template("failuser.html")
#insert info into table
db.execute("INSERT INTO users(username, hash, email) VALUES (:username, :password, :email)",
username = request.form.get("username"),
hash=generate_password_hash(request.form.get("password")),
email=request.form.get("email"))
#remember user
rows = db.execute("SELECT * FROM rows WHERE username = :username",
username=request.form.get("username"))
session["user_id"] = rows[0]["id"]
return render_template("/index")
else:
return render_template("/register")
如果需要进一步的信息,请务必告诉我,我们将不胜感激。
答案 0 :(得分:0)
我认为问题出在最后四行:
return render_template("/index")
else:
return render_template("/register")
您正尝试返回html页面,而不是(可能)希望将其重定向到该url。
代替render_template使用重定向