下面代码的POST部分有问题。我得出的结论是,在从登录发送表单后,键变量将被重新加载,整数更改为不再与逻辑匹配。但出于某种原因,如果我将riddle和dbanswer打印到终端,它总是可以工作的。
我是Python和Flask的新手,我不确定我的代码中是否有一种方法可以通过重新排列或使用某种重定向分别处理GET和POST来修复这个错误,以便在两者之间固定键。
@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>"发布于 2015-09-11 12:50:27
把钥匙放在表格里就行了。
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到您的视图时,您可以抓住它来完成圆圈:
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")https://stackoverflow.com/questions/32514776
复制相似问题