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