Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flask 烧瓶中的动态形态_Flask_Flask Wtforms - Fatal编程技术网

Flask 烧瓶中的动态形态

Flask 烧瓶中的动态形态,flask,flask-wtforms,Flask,Flask Wtforms,在电影评级应用程序中,我想在flask中生成一个WTF表单,其中包含动态数量的字段。i、 如果有三部电影,就会有三个领域 我考虑了几个选项,但没有一个可行: class RatingForm(Form): rating = TextField("rating",[validators.Length(min=1, max=1)]) movie_order=TextField("movie",[validators.Length(min=1, max=1)]) submit

在电影评级应用程序中,我想在flask中生成一个WTF表单,其中包含动态数量的字段。i、 如果有三部电影,就会有三个领域

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

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")
  • 将参数传递给表单对象-我不知道如何将参数传递给此类类

  • 在模板内进行循环,从而生成并返回多个表单,并选择正确的表单。这也不起作用,因为request.form是不可变的dict,并且我最终拥有多个具有相同密钥的字段,我无法访问这些字段

    {电影中电影的百分比\u到\u比率%}
    
    {{电影}
    {{forms[movie].rating}
    {{forms[movie].submit}
    

    {%endfor%}

  • 关于我能做什么有什么想法吗?

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


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


    您可以通过完全动态控制,但我不知道是否有更好的解决方案来解决您的问题。@syntonym谢谢,但我正在寻找与flask更相关的东西…一个疯狂的猜测,但是,您可以将表单实例列表传递给模板吗?您是否查看了
    FormField
    与中的
    FieldList
    相结合的情况?您可以通过进行完全动态控制,但我不知道是否有更好的解决方案来解决您的问题。@syntonym谢谢,但是我在寻找与flask更相关的东西…一个粗略的猜测,但是您能将表单实例列表传递给模板吗?您是否查看了
    FormField
    FieldList
    的组合,如中所示?
    {% 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 %}
    
    class RatingForm(Form):
        def __init__(self, count):
            self.ratings = [TextField("rating_" + str(i), [validators.Length(min=1, max=1)])
                       for i in range(count)]
            ...