【发布时间】:2021-07-13 05:09:55
【问题描述】:
我正在尝试创建一个注册页面,页面上有两个密码字段,一个用于密码本身,第二个用于确认密码(当然还有用户名):
HTML:
<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.
顺便说一句,甚至在网页加载之前,而不是在我提交表单时,都会引发错误。
Python:
# 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)
我的登录页面运行良好,就是这样。
【问题讨论】:
-
@mechanical_meat 它有效!非常感谢,真是个愚蠢的错误 XD,我什至在 DOM 中也将表单请求设置为
POST。 -
没关系。我实际上并不确定是否可以使用 HTTP GET 发送表单数据,所以我删除了我的评论,但我确定这不是你想要做的,因为你没有任何东西可以获取值来自 URL。
-
我很高兴你能成功 :)
-
是的,我想知道您为什么删除了评论,如果您想要声誉,请回答问题
标签: python python-3.x dictionary flask key