Flask-WTF:如何在html文件中设置动态数量的字段?

时间:2016-01-20 18:34:13

标签: python html csv flask flask-wtforms

我有一个带有许多简单字段(复选框)的Flask-WTF表单。我得到了一段Python代码,它根据改变大小的csv文件创建字段变量。这意味着每次有人加载Web表单时,字段数可能会有所不同。

这是我的Flask-WTF Python代码:

from flask.ext.wtf import Form
import csv
from wtforms import TextField, RadioField, TextAreaField, SubmitField, validators, BooleanField

class ContactForm(Form):

    # Creation dynamic local variables, one for each field
    with open('/Fields.csv', 'rb') as f:
        reader = csv.reader(f)
        r = list(reader)

    for i in range(1,len(r)):
        locals()[''.join("field_"+str(i))] = BooleanField(str(r[i][0])+" "+str(r[i][1]))

    submit = SubmitField("Send")

如果不优雅,则可行:代码生成名为field_1,field_2,field_3,...,field_n的变量(其中n是csv文件中的条目总数)。

现在,这是 - 如果我理解它 - Flask-WTF的工作原理:我需要编写一个显示这些字段的html文件。像这样:

{% extends "layout.html" %}
{% block content %}  

    <form action="{{ url_for('home') }}" method=post>
      {{ form.hidden_tag() }}

       <h2>List of checkboxes dynamically built from local csv file</h2>

      #this needs to be dynamically set
      {{ form.field_1.label }}
      {{ form.field_1 }}

      {{ form.field_2.label }}
      {{ form.field_2 }}

      {{ form.field_3.label }}
      {{ form.field_3 }}

      ...

      {{ form.submit }}
    </form>

  {% endif %}
{% endblock %}

我的问题是,不知道我的csv文件中有多少个字段,我不能预先写好这些字符串:

{{ form.field_1.label }}
{{ form.field_1 }}

有没有办法将Flask-WTF代码中的必填字段数传递给html文件,然后在html文件中以某种方式创建相应数量的字段?

0 个答案:

没有答案