首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在GET和POST之间传递随机生成的DB密钥

在GET和POST之间传递随机生成的DB密钥
EN

Stack Overflow用户
提问于 2015-09-11 02:58:50
回答 1查看 49关注 0票数 0

下面代码的POST部分有问题。我得出的结论是,在从登录发送表单后,键变量将被重新加载,整数更改为不再与逻辑匹配。但出于某种原因,如果我将riddledbanswer打印到终端,它总是可以工作的。

我是Python和Flask的新手,我不确定我的代码中是否有一种方法可以通过重新排列或使用某种重定向分别处理GET和POST来修复这个错误,以便在两者之间固定键。

代码语言:javascript
复制
@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>"
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-11 12:50:27

把钥匙放在表格里就行了。

代码语言:javascript
复制
if request.method == 'GET':
    return render_template('login.html', riddle=riddle, riddle_id=key)

然后在您的login.html表单中,使用该值:

代码语言:javascript
复制
<input type="hidden" name="riddle_id" value="{{ riddle_id }}"/>

现在,当您将该表单POST到您的视图时,您可以抓住它来完成圆圈:

代码语言:javascript
复制
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")
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32514776

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档