我正在尝试制作一个注册页面,页面上有两个密码字段,一个用于密码本身,第二个用于确认密码(当然还有用户名):
<div class="fields">
<input id="usr" type="text" name="username" placeholder="Username" required>
<input id="pass" type="password" name="password" placeholder="Password" required>
<input id="confirmpass" type="password" name="confirm_password" placeholder="Confirm password" required>
</div>
我知道错误是什么和意味着什么,它是一个 KeyError
意味着它找不到我传递给 requests.form
的密钥,这些错误的大多数情况都是拼写错误,所以我检查了多次拼写,甚至复制粘贴相同的字符串。
我的问题是我不知道为什么第三个字段^不在requests.form
中,也许是因为我有两种密码类型?但我没有看到任何地方说这是不允许的。
File ...
if request.form["confirm_password"]==request.form["password"]
File ...
raise exceptions.BadRequestKeyError(key)
werkzeug.exceptions.BadRequestKeyError: 400 Bad Request: The browser (or proxy) sent a request that this server could not understand.
该错误在网页加载之前引发,而不是在我提交表单时引发。
# Accounts = JSON File
@app.route("/signup",methods=["GET","POST"])
def signup():
if request.method=="GET":
if request.form["confirm_password"]==request.form["password"]: # Where the error traces back to
if request.form["username"]not in Accounts.keys():
Accounts[request.form["username"]]=Accounts["Default"]
Accounts[request.form["username"]]["Password"]=request.form["password"]
redirect(url_for("login",name=request.form["username"]))
else:return render_template(Signup,valid="Username already taken",name=request.form["username"])
else:return render_template(Signup,valid="Password confirmation does not match password",name=request.form["username"])
else:return render_template(Signup)
我的登录页面完美无缺,仅此而已。
答案 0 :(得分:2)
您设置路由的方式表明您希望收到 POST 请求。因此,您的代码当前错误地期待 GET 请求。
快速解决方法是将路由的第一行更改为:
def signup():
if request.method == "POST":
# ...