【问题标题】:WTForm validation always failed and validators does not generate error messageWTForm 验证总是失败并且验证器不会生成错误消息
【发布时间】:2019-06-20 06:37:53
【问题描述】:

我通过输入一些错误的内容测试了我的代码,但是一旦我点击提交,屏幕上没有生成任何错误消息

我也尝试输入正确的内容来尝试,但是一旦我检查了打印,它显示验证总是失败。 (已解决)

应用程序:

@app.route('/register', methods=['GET', 'POST'])
def register():
    form = RegisterForm()
    if form.validate_on_submit():
        print('validated')
        username = form.username.data
        password = bcrypt.generate_password_hash(form.password.data)
        email = form.mail.data
        print(username, password, email)
        flash("Successfully registered")
    else:
        print('validation failed')
    return render_template('register.html', form=form)

注册表格:

from flask_wtf import FlaskForm
from wtforms import StringField, PasswordField, SubmitField
from wtforms.validators import DataRequired, Length, EqualTo, Email

class RegisterForm(FlaskForm):
    username = StringField('Username', [validators.Length(min=4, max=25)])
    password = PasswordField('Password', validators=[DataRequired(), Length(min=6, max=20)])
    confirm_password = PasswordField('Re-enter Password', validators=[DataRequired(), EqualTo(password)])
    email = StringField('Email', validators=[DataRequired(), Email()])
    submit = SubmitField('Register')

html:

{% extends 'base.html' %}
{% import "bootstrap/wtf.html" as wtf %}

{% block content %}
    <div class = 'container'>
        <br>
        <h1>Register Now</h1>
        <br>
        <div class="row">
            <div class="col-md-8">
                {{ form.hidden_tag() }}
                {{ wtf.form_errors(form, hiddens="only") }}

                {{ wtf.form_field(form.username) }}
                {{ wtf.form_field(form.password) }}
                {{ wtf.form_field(form.confirm_password) }}
                {{ wtf.form_field(form.email) }}
                {{ wtf.form_field(form.submit) }}
            </div>
        </div>
    </div>
{% endblock %}

我也试过

{{ wtf.quick_form(form) }}

但它也不会生成错误消息。

【问题讨论】:

    标签: python flask flask-wtforms wtforms flask-bootstrap


    【解决方案1】:

    你试过了吗:

    {{ wtf.form_errors(form) }}
    

    根据docs

    hiddens – 如果为 True,则也渲染隐藏字段的错误。如果是“only”,则只渲染这些。

    所以你只显示隐藏字段的错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-22
      • 2018-02-22
      • 1970-01-01
      相关资源
      最近更新 更多