flask-wtf validate_on_submit()

发布于 2022-09-02 00:30:18 字数 1179 浏览 13 评论 0

验证用户名和密码,validate_on_validate()返回值因为True,但是下面的代码却是False,求解答:

class LoginForm(Form):
    username = StringField('Username')
    password = PasswordField('Password')
    submit = SubmitField('Login')
    def validate_username(self, field):
        if field.data != 'you':
            raise ValidationError('Invalid username')
    def validate_password(self, field):
        if field.data != 'flask':
            raise ValidationError('Invalid password')
@app.route('/', methods=['POST', 'GET'])
def login_view():
    form = LoginForm()
    if form.validate_on_submit():
            flash('Username and password are correct')
            return redirect('/')
    return render_template('form.html', form = form)

如上form.validate_on_submit()返回值总是为False
我只能把代码改为:

@app.route('/', methods=['POST', 'GET'])
def login_view():
    form = LoginForm()
    if request.method == 'POST':
        if not form.validate_on_submit():
            flash('Username and password are correct')
            return redirect('/')
    else:
        return render_template('form.html', form = form)

这样才会有用,求解答

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

香草可樂 2022-09-09 00:30:18

问题可能是因为你的表单里StringField和PasswordField没有validators,如果表单里没有写validators的话,相当于你提交的表单内容是空,后端的form.validate_on_submit()就会一直是false。
试试这种写法

username = StringField('Username',validators=[Required()])
password = PasswordField('Password',validators=[Required()])

如果你的username和password需要特殊格式的话,这里validators可能不只要写Required。我的登录验证表单是这样写的

email = StringField('Email',validators=[Required(),Length(1,64),Email()])
password = PasswordField('Password',validators=[Required()])

这里需要引入一些验证的包或者叫验证函数

from wtforms.validators import Required,Email

可以参考一下这里
http://stackoverflow.com/questions/20170234/validate-on-submit-always-returns-false-using-flask-wtforms

梦明 2022-09-09 00:30:18

你上面的LoginForm类继承的是Form,改一下,改为继承FlaskForm试试:

from flask_wtf import FlaskForm

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文