向WTForms表单动态添加字段

2024-04-25 22:59:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用基于name: label指令的字段定义一个表单类。我试了一下下面的方法,几乎成功了。但是,在模板中呈现字段会得到AttributeError: 'UnboundField' object has no attribute '__call__'。如何向窗体动态添加字段?

def build_form(name, record):
    class ContactForm(FlaskForm):
        name = StringField(name)
        fieldlist = {}

        for key, value in record.items():
            fieldlist[key] = StringField(key)

    @app.route('/', methods=['GET', 'POST'])
    def showform():
        form = ContactForm(request.form)

        if request.method == 'POST':
            return 'form processed'

        return render_template('cardcompare.tpl', record=record, form=form)
<form method=post>
    {{ form.name() }}
    {% for key, value in record.items() %}
        {{ form.fieldlist[key]() }}
    {% endfor %}
    <input type=submit value=Register>
</form>

Tags: keynameinformforvaluerequestdef