代码之家  ›  专栏  ›  技术社区  ›  SnarkShark

使用烧瓶表单结果生成URL?

  •  1
  • SnarkShark  · 技术社区  · 9 年前

    12345, 23456 在TextField表单中,应用程序将对这些ID进行一些分析,然后显示结果。我的问题是,当前,当用户单击“提交”并完成数据分析时,它总是将用户重定向到 www.website.com/results .我需要创建唯一的url,如 www.website.com/results/12345+23456

    现在,有一些关于StackOverflow的问题与我的问题类似,但它们不一样,对我没有帮助。因此,首先,在讨论之前,让我展示一些代码。

        <div>
     <form action="https://website.com/results/" class="form-inline" method="post">
        <div class="form-group">
        <label for="PubmedID">Pubmed ID(s)</label>
        <input type="text" class="form-control" id="PubmedID" name="pmid" value="{{request.form.pmid}}">
      </div>
      <button type="submit" id= "myButton" class="btn btn-default" data-toggle="modal" data-target="#myModal">Submit</button>
    </form>
    </div> 
    

    正如你所见 value 因为表单是 request.form.pmid

    class pmidForm(Form):
        pmid = TextField('PubmedID')
    

    action 这种形式的指向 website.com/results 这会触发调用我的Flask函数:

    @app.route('/results/', methods=["POST"])
    def results():
        form = pmidForm()
        try:
            if request.method == 'POST':
    
                #entry = request.form or request.data doesn't help me...
                entry = form.pmid.data #This is the user input from the form! 
                # DO LOTS OF STUFF WITH THE ENTRY 
    
    
        return render_template('results.html')
    
        except Exception as e:
            return(str(e))
    

    正如你所见,我正在使用 POST 和 form.pmid.data

    再说一次,我不想直接重定向到 /results form action 指向 https://website.com/results/{{request.form.pmid}}/ 然后将结果函数更新为

    @app.route('/results/<form_stuff>', methods=["POST"])
    def results(form_stuff):
    

    但这从来没有工作,将重新引导我到404找不到的页面。我认为这是有道理的,因为在 行动

    现在,我的另一个类似帖子是: Keeping forms data in url with flask ,但它并不能回答或解决我的问题。对于这篇文章,人们提出的关键点是使用 岗位 (我已经这么做了),并获取和返回数据 return request.args['query'] return render_template() 正是我想要的。我只需要在 results URL,以便用户在表单中输入的任何内容都可以是唯一的。

    /结果 函数以将表单数据添加到URL?请让我知道,如果有任何其他信息,我可以提供,使我的问题更清楚。我感谢你的帮助!谢谢

    1 回复  |  直到 9 年前
        1
  •  3
  •   Daniel Roseman    9 年前

    这不是关于烧瓶的问题。

    如果您希望在提交表单时在URL中显示数据,则应使用 method="get" https://website.com/results/?pmid=12345 .