validate_on_submit() got multiple values for argument 'extra_validators'

98 Views Asked by At

I'm trying to implement authorization in my flask admin project. And I have strange error as in header that I can not fix.

forms:

class LoginForm(FlaskForm):
    password = PasswordField('Password', validators=[DataRequired()])
    email = EmailField('E-mail', validators=[DataRequired()])
    remember = BooleanField('Remember Me')
    next = TextAreaField('next')
    submit = SubmitField('Sign In')

AdminIndexView:

class MyAdminIndexView(AdminIndexView):
    @expose('/')
    def index(self):
    if not current_user.is_authenticated:
        return redirect(url_for('.login_page'))
    return super(MyAdminIndexView, self).index()

    @expose('/login', methods=('GET', 'POST'))
    def login_page(self):
    if current_user.is_authenticated:
        return redirect(url_for('.index'))
    form = LoginForm()
    if form.validate_on_submit(form):
        user = User.query.filter_by(username=form.username.data).first()
        app.logger.info('user = ', user)
        if user is None or not verify_hash(form.password.data, user.password):
            flash('Invalid username or password')
        user = User.query.filter_by(username=form.email.data).first()
        login_user(user, remember=form.remember.data)
        next_page = request.args.get('next')
        if not next_page or url_parse(next_page).netloc != '':
            next_page = url_for('admin.index_view')
        return redirect(next_page)
      
    return render_template(
        'security/login_user.html',
        title='Sign In',
        login_user_form=form
    )

I go to index page, flask redirects me on login page. Login page's method call validate_on_submit and it results with this error. I tried to add extra_validators to parameters of validate_on_submit but whatever I wrote the error was the same

1

There are 1 best solutions below

1
jwag On

A recent change to Flask-WTForms added this - later versions of Flask-Security-Too support this. If you are using Flask-Security I don't think it will work unless you downgrade Flask-WTFOrms.