使用烧瓶形式结果生成 URL?

Using flask form result to generate a URL?

我正在创建一个应用程序来进行一些分析,前提是用户在表单中输入了一些 ID。例如,如果用户在 TextField 表单中键入 12345, 23456,应用程序将 运行 对这些 ID 进行一些分析,然后显示结果。我的问题是目前,当用户点击 "Submit" 并且数据分析完成时,它总是将用户重定向到 www.website.com/results。我需要创建独特的 url,例如 www.website.com/results/12345+23456,以便 1) 我可以拥有多个用户,并且 2) 用户可以将此 link 发送给其他人以重新生成分析。

现在,Whosebug 上有一些问题与我的问题类似,但它们并不相同,对我没有帮助。所以首先,让我在讨论之前展示一些代码。

我有一个包含以下表格的主页:

    <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> 

如您所见,表单的 valuerequest.form.pmid。我的 Flask-Wtform 在这里:

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

由于此表单的 action 指向触发我的 Flask 函数被调用的 website.com/results

@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))

如您所见,我正在使用 POSTform.pmid.data 从文本字段表单中获取数据。

同样,我不想只重定向到 /results,我想对此进行扩展。我试图修改我的表单,使 form action 指向 https://website.com/results/{{request.form.pmid}}/,然后将结果函数更新为

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

但这从来没有奏效,并且会将我重定向到 404 未找到页面。我认为这是有道理的,因为无论如何 HTML 首次呈现时 action 中没有表单数据。

现在,与我的相似的另一个 post 是:Keeping forms data in url with flask,但它完全没有回答或解决我的问题。对于这个post,人家做的重点是用POST(我已经用了),用return request.args['query']获取和return数据。对我来说,我已经在根据需要处理表单数据,而且我的 return render_template() 正是我想要的。我只需要在 results URL 中添加一些内容,以便它对于用户输入表单的任何内容都是唯一的。

我需要向 html 中的表单和 Flask /results 函数中添加什么才能将表单数据添加到 URL 中?如果我可以提供任何其他信息以使我的问题更清楚,请告诉我。感谢您的帮助!谢谢

这实际上不是关于 Flask 的问题。

如果您希望数据在提交表单时显示在 URL 中,您应该使用 method="get" 而不是 "post"。然后 URL 将采用 https://website.com/results/?pmid=12345.

的形式