Flask中的动态表单

时间:2016-07-14 14:41:17

标签: flask flask-wtforms

在电影评级应用中,我想在具有动态字段数量的烧瓶中生成WTF表单。即如果有三部电影,则会有三个字段。

我想了几个选项,但没有一个可行:

class RatingForm(Form):
    rating = TextField("rating",[validators.Length(min=1, max=1)])
    movie_order=TextField("movie",[validators.Length(min=1, max=1)])
    submit = SubmitField("submit rating")
  1. 将参数传递给表单对象 - 我看不出如何将参数传递给这种类

  2. 在模板中创建一个循环,从而生成并返回多个表单,并选择正确的表单。这也不起作用,因为request.form是immutableDict,我最终有多个具有相同键的字段,我无法访问。

    {% for movie in movies_to_rate %}
      <p>
        <form method="POST" enctype="multipart/form-data" action="/rate">
        {{ movie}}
        {{ forms[movie].rating}}
        {{ forms[movie].submit }}
        <input type="submit" value="Go">
    
    </p>  {% endfor %}
    
  3. 关于我能做什么的任何想法?

1 个答案:

答案 0 :(得分:0)

我认为你可以生成一个TextField列表作为类成员,而不是使用一个字段对象。 (虽然看起来有点奇怪,但我认为你的验证器就是你的意思。)

class RatingForm(Form):
    def __init__(self, count):
        self.ratings = [TextField("rating_" + str(i), [validators.Length(min=1, max=1)])
                   for i in range(count)]
        ...