Flask 烧瓶-返回提交的相同表格

Flask 烧瓶-返回提交的相同表格,flask,submit,request.form,Flask,Submit,Request.form,我如何让Flask在用户提交页面上的表单后,以相同的方式将其返回到同一页面?”“render_template”似乎只有在我提前知道所有变量的情况下才起作用。我的表单是动态的,变量根据用户的选择而变化。请参阅下面的psuedo代码了解我的想法。我知道render_模板不是这样工作的,但是有没有一种方法可以说“使用呈现模板时输入的相同表单值?” 下载的最简单方法是要求它在表单上使用target=“\u blank”: <form action="/MyPage" method="POST"

我如何让Flask在用户提交页面上的表单后,以相同的方式将其返回到同一页面?”“render_template”似乎只有在我提前知道所有变量的情况下才起作用。我的表单是动态的,变量根据用户的选择而变化。请参阅下面的psuedo代码了解我的想法。我知道render_模板不是这样工作的,但是有没有一种方法可以说“使用呈现模板时输入的相同表单值?”


下载的最简单方法是要求它在表单上使用
target=“\u blank”

<form action="/MyPage" method="POST" target="_blank">
  <ul>
  {% for input in form %}
    <li>{{ input.label }} {{ input }}</li>
  {% endfor %}
  </ul>
</form>
如果需要在表单上设置多个按钮,则不必在表单上设置
target
,只需在触发CSV的按钮上设置:

<form action="/MyPage" method="POST">
  <ul><!-- ... snip ... --></ul>
  <button name="submit_action" value="SAVE_AS_CSV" formtarget="_blank">Save as CSV</button>
  <button name="submit_action" value="RUN_CALCULATION">Run Calculation</button>
</form>

另请参见:

澄清:您希望将他们返回页面,并在表格中填写他们刚刚提交的内容?为什么?我正在尝试创建一个用户填写的.csv格式的“保存”文件,供他们下载。我正在接受表单输入,并向他们发送一个.csv文件,以便他们以后可以上传它,然后继续他们离开的地方。在我向他们发送.csv文件后,我希望将他们发送回原来的位置,而不是让他们重新填写。也许有更简单的方法?我是个笨蛋,我应该说得更清楚些。实际上,我在表单中有多个提交按钮,一个用于保存,一个用于运行计算,因此将表单目标设置为“_blank”将对一个按钮有效,而对另一个按钮无效。这是转换为.csv的有用参考。在behavior@DCB2524中更新为支持多个表单按钮,而不使它们全部为空。
@app.route('/MyPage', methods=['GET', 'POST'])
def MyPage():
  if request.method == 'POST':
    # Turn `request.form` into a CSV
    # see https://stackoverflow.com/q/26997679/135978 for an example
    headers = {'Content-Disposition': 'attachment; filename=saved-form.csv', 'Content-Type': 'text/csv'}
    return form_as_csv, headers
  else:
    # Do some other stuff
<form action="/MyPage" method="POST">
  <ul><!-- ... snip ... --></ul>
  <button name="submit_action" value="SAVE_AS_CSV" formtarget="_blank">Save as CSV</button>
  <button name="submit_action" value="RUN_CALCULATION">Run Calculation</button>
</form>
if request.method == 'POST':
    if request.form['submit_action'] == 'SAVE_AS_CSV':
        # Return the CSV response
    else:
        # Return the calculation response