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

时间:2018-11-14 10:25:44

标签: python flask module flask-wtforms wtforms

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

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

我在线上遇到了这个模块:https://pypi.org/project/WTForms-Dynamic-Fields/

我对应该如何实现该模块感到困惑。

它表示在使用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>

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)

有人可以快速浏览一页文档,并告诉我该如何实现。这也将帮助我继续使用其他模块(相对初学者)。

谢谢。

0 个答案:

没有答案