Flask-返回与提交的表格相同的表格

时间:2019-05-27 21:11:09

标签: flask submit request.form

在用户提交页面上的表单后,如何让Flask将用户返回到同一页面(填写方式相同)?如果我提前知道所有变量,“ render_template”似乎才起作用。我的表单是动态的,变量根据用户所做的选择而变化。有关我在想什么,请参见下面的伪代码。我知道render_template不能像这样工作,但是有一种方法可以说“使用呈现模板时使用的相同表单值?”

@app.route('./MyPage', methods=['GET', 'POST'])
def MyPage():

  if request.method == 'POST':
    # Do some stuff
    # return render_template('MyPage.html', context=request.form)
  else:
    # Do some other stuff

1 个答案:

答案 0 :(得分:0)

以要求您在表单上使用target="_blank"的方式进行下载的最简单方法:

<form action="/MyPage" method="POST" target="_blank">
  <ul>
  {% for input in form %}
    <li>{{ input.label }} {{ input }}</li>
  {% endfor %}
  </ul>
</form>

然后,您的POST处理方法无需执行任何其他操作,只需返回CSV:

@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

另请参阅:Writing a CSV from Flask framework