使用 Flask / WTForms 的多部分表单
Multi-part form using Flask / WTForms
我要生成一个包含多个部分的表单 - 想想类似于购物车的工作流程,其中您有多个 "sections"(例如详细信息、账单、付款等)用于一次显示一个表单.
关键细节:
- 我的表格有 3 个部分
- 这些部分必须按顺序完成,第 2 部分依赖于第 1 部分的信息
- 除非此人完成完整流程(第 1、2 和 3 部分),否则表单数据无用(例如将被丢弃)。
我考虑过的方法:
- 使用一条路线
def
并在 request.args
中存储一个值,该值告诉我 "Section" 我当时在哪个 render_template
不同的表单模板取决于部分.这感觉很老套...
- 每个部分都有不同的路线和视图。这感觉不对,我不得不阻止人们通过 URL
直接进入第 2 步
- 将所有部分放在一个表格中,使用 Javascript 隐藏部分表格并以这种方式在部分之间移动
在 Flask/WTForms 中完成此任务的最佳方法是什么? None 我在上面发布的方法似乎是正确的,我毫不怀疑这是一个相当普遍的要求。
最优雅的解决方案无疑需要一些 javascript,正如您在上一个想法中提到的那样。您可以使用 JS 来隐藏表单的不同部分,并在客户端执行必要的检查 and/or 数据操作,只有在正确并完成时才将其提交到您的 flask 路由。
你说的第一种方法我已经用过了。这是它的样子:
@simple_blueprint.route('/give', methods=['GET', 'POST'])
@simple_blueprint.route('/give/step/<int:step>', methods=['GET', 'POST'])
@login_required
def give(step=0):
form = GiveForm()
...
return blah blah
这种感觉你说的没错"hacky"。但是,如果路由除了处理表单之外不需要做很多其他事情,它就可以工作。我的路线工作的方式是收集数据,然后向用户询问一堆关于数据的问题。你解释你的情况的方式,需要收集每一步的数据,我真的会推荐 javascript 解决方案。
我要生成一个包含多个部分的表单 - 想想类似于购物车的工作流程,其中您有多个 "sections"(例如详细信息、账单、付款等)用于一次显示一个表单.
关键细节:
- 我的表格有 3 个部分
- 这些部分必须按顺序完成,第 2 部分依赖于第 1 部分的信息
- 除非此人完成完整流程(第 1、2 和 3 部分),否则表单数据无用(例如将被丢弃)。
我考虑过的方法:
- 使用一条路线
def
并在request.args
中存储一个值,该值告诉我 "Section" 我当时在哪个render_template
不同的表单模板取决于部分.这感觉很老套... - 每个部分都有不同的路线和视图。这感觉不对,我不得不阻止人们通过 URL 直接进入第 2 步
- 将所有部分放在一个表格中,使用 Javascript 隐藏部分表格并以这种方式在部分之间移动
在 Flask/WTForms 中完成此任务的最佳方法是什么? None 我在上面发布的方法似乎是正确的,我毫不怀疑这是一个相当普遍的要求。
最优雅的解决方案无疑需要一些 javascript,正如您在上一个想法中提到的那样。您可以使用 JS 来隐藏表单的不同部分,并在客户端执行必要的检查 and/or 数据操作,只有在正确并完成时才将其提交到您的 flask 路由。
你说的第一种方法我已经用过了。这是它的样子:
@simple_blueprint.route('/give', methods=['GET', 'POST'])
@simple_blueprint.route('/give/step/<int:step>', methods=['GET', 'POST'])
@login_required
def give(step=0):
form = GiveForm()
...
return blah blah
这种感觉你说的没错"hacky"。但是,如果路由除了处理表单之外不需要做很多其他事情,它就可以工作。我的路线工作的方式是收集数据,然后向用户询问一堆关于数据的问题。你解释你的情况的方式,需要收集每一步的数据,我真的会推荐 javascript 解决方案。