如何使用WTForms动态字段模块(Flask/Python)

如何使用WTForms动态字段模块(Flask/Python),python,flask,module,flask-wtforms,wtforms,Python,Flask,Module,Flask Wtforms,Wtforms,我想,在如何实现自定义Python模块的帮助下,这个问题可以得到更一般的解释 我正在构建一个Flask Web应用程序,并试图创建一个相当复杂的表单,它基本上允许用户在单击按钮时添加更多字段,但仍然保留了WTForms的优点 我在网上遇到过这个模块: 我不知道该如何实现该模块 它说在使用add_field()和add_validator()方法之前创建模块的实例。然后将表单变量绑定到“process()”方法。我想我应该包括一个JavaScript按钮,但对于如何实现这一点,我感到非常困惑 作为

我想,在如何实现自定义Python模块的帮助下,这个问题可以得到更一般的解释

我正在构建一个Flask Web应用程序,并试图创建一个相当复杂的表单,它基本上允许用户在单击按钮时添加更多字段,但仍然保留了WTForms的优点

我在网上遇到过这个模块:

我不知道该如何实现该模块

它说在使用add_field()和add_validator()方法之前创建模块的实例。然后将表单变量绑定到“process()”方法。我想我应该包括一个JavaScript按钮,但对于如何实现这一点,我感到非常困惑

作为一个简单的例子,我尝试在这个简单的WTForm上实现它:

class LoginForm(FlaskForm):
username = StringField('username', validators=[InputRequired()])
password = PasswordField('password', validators=[InputRequired()])
dynamic = WTFormsDynamicFields()
HTML表单:

<form method="POST" action="{{url_for('form')}}">
{{ form.csrf_token }}
{{ render_field(form.username) }}
{{ render_field(form.password) }}

<button onclick="dynamic.add_field('email', 'Email address', TextField)">Click Me!</button>

{{form.csrf_token}
{{render_字段(form.username)}
{{render_字段(form.password)}
点击我!

App.py:

@app.route('/form/', methods=['GET', 'POST'])
def form():
form = dynamic.process(LoginForm(), request.post)
if form.validate_on_submit():
    return '<h1>Thanks</h1>'
return render_template("form.html", form=form)
@app.route('/form/',方法=['GET',POST'])
def form():
form=dynamic.process(LoginForm(),request.post)
if form.validate_on_submit():
返回“谢谢”
返回渲染模板(“form.html”,form=form)
是否有人能给一页文档快速扫描,并告诉我如何准确地实现这一点。它将帮助我进一步使用其他模块(相对初学者)

提前谢谢。

这个怎么样?