我在处理下面代码的 POST 部分时遇到问题。我得出的结论是,在从登录发送表单后,正在重新加载关键变量,并且整数更改为不再始终与逻辑匹配。但出于某种原因,如果我将 riddle
和 dbanswer
打印到终端,它总是有效。
我是 Python 和 Flask 的新手,我不确定是否有办法通过重新安排代码或使用某种重定向来分别处理 GET 和 POST 来修复我的代码中的这个错误,以便修复 key 两者之间。
@app.route("/", methods=['GET','POST'])
def HomePage():
key = random.randint(1,3)
riddle = con.get("riddle:%i" %key)
dbanswer = con.get("riddle:%i:answer" %key)
# print(riddle)
# print(dbanswer)
if request.method == 'GET':
return render_template("login.html", riddle = riddle)
elif request.method =="POST":
answer = request.form['answer']
if answer == dbanswer:
return render_template("welcome.html")
else:
return render_template("login.html", riddle = riddle)
else:
return "<h2>Invalid request</h2>"
最佳答案
只需将 key 存储在表单中即可。
if request.method == 'GET':
return render_template('login.html', riddle=riddle, riddle_id=key)
然后在您的 login.html
表单中,使用该值:
<input type="hidden" name="riddle_id" value="{{ riddle_id }}"/>
现在,当您POST
表单到您的 View 时,您可以捕获它来完成圆圈:
if request.method == "POST":
answer = request.form['answer']
riddle_id = request.form['riddle_id']
if answer == con.get("riddle:%i:answer" % riddle_id):
return render_template("welcome.html")
关于python - 在 GET 和 POST 之间传输随机生成的数据库 key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32514776/