在用户提交页面上的表单后,如何让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
答案 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