I guess this question can be interpreted more generally with help on how to implement custom Python Modules.
I am building a Flask Web App and trying to create a reasonably complex form that basically allows a user to add more fields on button click but still retaining the benefits of WTForms.
I have come across this module online: https://pypi.org/project/WTForms-Dynamic-Fields/
I am confused as to how I am supposed to implement the module.
It says to create an instance of the module before using the add_field() and add_validator() methods. Before then binding the form variable to the 'process()' method. I guess I am meant to include a JavaScript button but getting very confused as to how to do this.
As a simple example I am trying to implement it on this simple WTForm:
class LoginForm(FlaskForm):
username = StringField('username', validators=[InputRequired()])
password = PasswordField('password', validators=[InputRequired()])
dynamic = WTFormsDynamicFields()
The HTML form:
<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)
Would someone be able to give the one-page documentation a quick scan and tell me how exactly this can be implemented. It will help me moving forward with using other modules too (relative beginner).
Thanks in advance.