Я использую Flask -WTF, и вот фрагмент моей формы. Маршруты входа и регистрации предваряются url_prefix='/auth'
в пользовательском Blueprint.
class RegisterForm(FlaskForm):
username = StringField('Username', validators=[DataRequired(), Length(min=2, max=20)])
email = StringField('Email', validators=[DataRequired(), Email()])
password = PasswordField('Password', validators=[DataRequired()])
confirm_password = PasswordField('Confirm Password', validators=[DataRequired(), EqualTo('password')])
submit = SubmitField('Sign Up')
Вот путь регистрации.
@users.route('/register', methods=['GET', 'POST'])
def register():
form = RegisterForm()
print("Before form validate")
print(form.errors)
if form.validate_on_submit():
print("After form validate")
flash(f'Account created for {form.username.data}!', 'success')
return redirect(url_for('main.home'))
return render_template('auth/register.html', title='Register', form=form)
Это - это минимальное представление шаблона (с включенным csrf_token). Я также пробовал .hidden_tag()
в шаблоне, но результат похож.
<form method="POST" action="">
{{ form.hidden_tag() }}
<span class="bmd-form-group">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text">
<i class="material-icons">account_circle</i>
</span>
</div>
{{ form.username(class="form-control form-control-lg" ~ (" is-invalid" if form.username.errors else ""), placeholder="Username...") }}
{% if form.username.errors %}
<div class="invalid-feedback">
{% for error in form.username.errors %}
<span>{{ error }}</span>
{% endfor %}
</div>
{% endif %}
</div>
</span>
<span class="bmd-form-group">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text">
<i class="material-icons">email</i>
</span>
</div>
{{ form.email(class="form-control form-control-lg" ~ (" is-invalid" if form.email.errors else ""), placeholder="Email...") }}
{% if form.email.errors %}
<div class="invalid-feedback">
{% for error in form.email.errors %}
<span>{{ error }}</span>
{% endfor %}
</div>
{% endif %}
</div>
</span>
...........
</form>
Как вы видите из моего маршрута регистрации, я также проверил возможные ошибки в форме. Это мой вывод на консоль после регистрационного теста.
Before form validate
{}
127.0.0.1 - - [18/Jun/2020 21:02:28] "GET /auth/register?csrf_token=IjFlZGRkNmQ5YzkwZmE2YWJiYzY5NWMxNTAyZTMzN2UxODNmZjgzOTEi.XuupQg.4_2FGVqnp-2lq2vriQbAkx1Qz3Q&username=test&email=test%40test.com&password=testing&confirm_password=testing&submit=Sign+Up HTTP/1.1" 200 -
127.0.0.1 - - [18/Jun/2020 21:02:29] "GET /favicon.ico HTTP/1.1" 404 -
Заранее спасибо!