Я новичок в WTForms, и из того, что я узнал до сих пор, я считаю ошибку проверки правильности немного сложной.Обработка ошибок WTForms с бесшовной настройкой пользователя
Во-первых, я не могу реализовать собственный HTML <input required >
;
Во-вторых, когда форма не прошла проверку, я должен пересмотреть шаблон страницы, на которой находится форма, и если моя форма помещена внизу страницы, пользователь увидит страницу «обновлена» и не имеет понятия что происходит.
Есть ли у кого-нибудь предложения по интеграции WTForms более плавно? Любые комментарии, ресурсы, URL-адреса, образцы кода приветствуются, спасибо!
Вот некоторые из моих родственных кодов:
# /forms.py
from wtforms import Form, BooleanField, StringField, PasswordField, validators
class RegistrationForm(Form):
email = StringField('Email Address', [
validators.required(),
validators.Email(message='Please enter a valid email address'),
validators.length(min=6, max=35)
])
password = PasswordField('New Password', [
validators.required(),
validators.DataRequired(),
validators.length(min=6, max=35)
])
# /views.py
from flask import Flask, Blueprint, flash, render_template, redirect, request, url_for
from forms import RegistrationForm, LoginForm
app = Flask(__name__)
@app.route('/', methods=['GET', 'POST'])
def index():
form = RegistrationForm()
context = {
"form": form
}
if request.method == 'POST' and form.validate():
submitted_form = request.form
return redirect('/welcome')
else:
return render_template('form.html', context = context)
# /form.html
<form class="form" action="" method="POST" name="register">
{% for field_name, field_errors in context.reg_form.errors|dictsort if field_errors %}
{% for err in field_errors %}
<li class="error">{{ context.reg_form[field_name].label }}: {{ err }}</li>
{% endfor %}
{% endfor %}
<ul class="form-fields center">
<li class="form-field">
{{ context.form.email(class='email', placeholder='email') }}
</li>
<li class="form-field">
{{ context.form.password(class='password', placeholder='password') }}
</li>
</ul>
</form>
Опыт загрузки страниц, который вы описываете, - это то, как работают HTML-формы. Если вы этого не хотите, вам нужно будет использовать JavaScript для отправки формы и обновления части страницы, о которой вы заботитесь. – dirn