Flask WTForms-将参数传递给表单,然后在变量存在时创建字段

Flask WTForms-将参数传递给表单,然后在变量存在时创建字段,flask,flask-wtforms,Flask,Flask Wtforms,根据传递给表单的参数,我希望返回不同的表单字段 class TestForm(FlaskForm): """Test Form.""" if one: field1 = StringField('Field 1') if two: field2 = StringField("Field 2") if three: field3 = St

根据传递给表单的参数,我希望返回不同的表单字段

class TestForm(FlaskForm):
    """Test Form."""

    if one:
        field1 = StringField('Field 1')
    if two:
        field2 = StringField("Field 2")
    if three:
        field3 = StringField("Field 3")
    submit = SubmitField("Add Service")

    def __init__(self, one=None, two=None, three=None, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.one = one
        self.two = two
        self.three = three

在执行if语句时,我无法看到参数

我知道在呈现表单时可以选择在html中使用逻辑,但是由于项目的性质,我选择在html端使用quick_表单

下面是我正在使用的html代码

{% import 'bootstrap/wtf.html' as wtf %}

<h3 >Add Service</h3>
<div class="row">
  <div class="col-md-4">
    {{ wtf.quick_form(form) }}
  </div>
</div>
{%import'bootstrap/wtf.html'作为wtf%}
添加服务
{{wtf.quick_form(form)}

而不是在表单类中创建此逻辑。我建议您创建所需的所有字段,然后动态选择在html文件中显示用户使用jinja2的字段。 这里有一个例子

{% for fields in fields_list %}
    {% if field == '1' %}
        {{ form.field1.label(class="form-control-label") }}
        {{ form.field1(class="form-control form-control-lg") }}
    {% endif %}
    {% if field == '2' %}
        {{ form.field2.label(class="form-control-label") }}
        {{ form.field2(class="form-control form-control-lg") }}
    {% endif %}
    {% if field == '3' %}
        {{ form.field3.label(class="form-control-label") }}
        {{ form.field3(class="form-control form-control-lg") }}
    {% endif %}
{% endfor %}
然后,当您从路由代码呈现或重定向到.html时,不要忘记发送 正确的论点,例如

# create your fields list, which do I want to show?
# Make it a list of integers

fields_list = [1, 2, 3]

return render_template('insert-name.html', fields_list , form=form)
如果我的回答对你有帮助,请考虑接受我的回答。 我是这个网站的新手,正在努力建立一些声誉:)
非常感谢。快乐编码

嗨,安德鲁,谢谢你的建议。我知道这个选项,但是我在html端使用快速表单。我有多个表单使用一个html页面,因此随着项目的发展,这将变得太复杂而无法管理。