Полагаю, что этот вопрос можно интерпретировать более широко с помощью того, как реализовать пользовательские модули Python.
Я создаю веб-приложение Flask и пытаюсь создать достаточно сложную форму, которая в основном позволяет пользователю добавлять больше полей при нажатии кнопки, но при этом сохраняет преимущества 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)
Может ли кто-нибудь быстро просмотреть одностраничную документацию и сказать, как именно это можно реализовать. Это поможет мне продвинуться вперед с использованием других модулей (относительный новичок).
Заранее спасибо.