使用Flask / Jinja2重复表单元素的最佳实践?

时间:2013-07-23 11:38:07

标签: forms flask jinja2

我正在设计一个包含多个重复条目的页面。例如:

<input type="text" name="fname1" /><input type="text" name="lname1" />
<input type="text" name="fname2" /><input type="text" name="lname2" />
<input type="text" name="fname3" /><input type="text" name="lname3" />
.
.
.
<input type="text" name="fnameN-1" /><input type="text" name="lnameN-1" />
<input type="text" name="fnameN" /><input type="text" name="lnameN" />

我正在使用Flask + Jinja2,所以显然我正在生成那个html a la:

{% for fname, lname in names %}
    <input type="text" name="fname{{ loop.index }}" value="{{ fname }}" /><input type="text" name="lname{{ loop.index }}" value="{{ lname }}" />
{% endfor %}

但是现在我想在有人更新之后从这个表单中提取值。

最好的方法是什么?我最初的想法是做这样的事情:

for x in range(1, N):
    fname = request.form.get("fname%d" % x)
    lname = request.form.get("lname%d" % x)

但出于某种原因,我感到笨拙。我希望有类似的东西:

for fname, lname in request.form.get_all('fname%d', 'lname%d'):
    # Stuff here

当然,我的搜索中没有找到任何内容,或者我也会在这里发布答案。有没有“最好的方法”来做这件事,还是我应该自己动手?

1 个答案:

答案 0 :(得分:1)

以下是评论中讨论的解决方案。我早些回答了

Dynamic form fields in flask.request.form