Как использовать модуль WTForms-Dynamic-fields (Flask / Python) - PullRequest
0 голосов
/ 14 ноября 2018

Полагаю, что этот вопрос можно интерпретировать более широко с помощью того, как реализовать пользовательские модули 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)

Может ли кто-нибудь быстро просмотреть одностраничную документацию и сказать, как именно это можно реализовать. Это поможет мне продвинуться вперед с использованием других модулей (относительный новичок).

Заранее спасибо.

...