Flask动态生成表单

时间:2017-12-08 21:42:13

标签: python

如何在Flask中创建可变大小的表单?

这是我的forms.py:

from flask_wtf import Form
from wtforms import StringField, BooleanField, SelectField, TextField
from wtforms.validators import DataRequired

class TestForm(Form):
    blanks = .... 

    test = []
    foreach blank in blanks
        test.append(TextField(blank, [validators.Length(min=5, max=70)]))

这是我的模板:

<form action="" method="post" name="test">
  {{ form.hidden_tag() }}
  {% for test in form.tests %}
    {{ test }}
  {% endfor %}
  <p><input type="submit" value="Test"></p>
</form>

显示&#34; TextField ...&#34;而不是显示表单输入的实际HTML。我究竟做错了什么?我该如何正确地做到这一点?

1 个答案:

答案 0 :(得分:0)

首先,您在表单类pipenv中命名了变量,但在模板中的test上进行了循环,但这很可能是错字。

核心问题是,您正在创建一个列表作为类属性,但是您在模板中访问的表单是该类的对象,而不是该类本身。要为每种表单设置一个类属性(wtform会为您生成字段的方式),您必须在导入类​​后修改该类。例如this answer on stackoverflow中的wit setattr()。