python - flask-wtf validate_on_submit()
ringa_lee
ringa_lee 2017-04-17 16:59:37
[Python讨论组]

验证用户名和密码,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)

这样才会有用,求解答

ringa_lee
ringa_lee

ringa_lee

全部回复(1)
巴扎黑

问题可能是因为你的表单里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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号