Я не могу понять, почему моя форма не будет проверена.Я удостоверился, что поле CSRF вставлено в HTML с form.hidden_tag
Вот код моей регистрационной формы:
from flask_wtf import FlaskForm
from wtforms import StringField, PasswordField, SubmitField, BooleanField
from wtforms.validators import DataRequired, Length, Email, EqualTo
class RegistrationForm(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('Register')
Вот функция, в которой я нахожусьпроверка, проверена ли форма.Он отправляет, поскольку программа выводит «отправлено» в мой терминал
@app.route('/register', methods=['GET', 'POST'])
def register():
form = RegistrationForm()
if form.is_submitted():
print("submitted")
if form.validate_on_submit():
flash(f'Account created for {form.username.data}!', 'success')
return redirect(url_for('home'))
print(forms.errors)
return render_template('register.html', title='Register', form=form)
Используя forms.errors
, я получаю следующее сообщение об ошибке:
{'confirm_password': ["Invalid field name '<UnboundField(PasswordField, ('Password',), {'validators': [<wtforms.validators.DataRequired object at 0x00000205913D2F28>]})>'."]}
Я не уверен в том, чтоэто значит.
Если это поможет, у меня весь текущий код расположен на GitHub: https://github.com/tomajohnson21/FakeBook