烧瓶 wtforms validate_on_submit

时间:2021-06-09 18:10:06

标签: flask flask-wtforms

我正在尝试创建一个基本表单,但我的 validate_on_submit() 函数没有实现。
它只返回 nahh,正如您在我的路线中看到的那样。 谁能帮我找出我的代码有什么问题。

验证:-

class LoginForm(FlaskForm):
    username = StringField('username', validators = [
        InputRequired(message = "Please Enter the username"),
        Length(min = 2, max = 23)
        ])
    password = PasswordField('password', validators = [
        InputRequired(),
        Length(min = 4, max = 25, message="Password must be between 4 and 25 characters")
        ])

路线:-

@app.route('/login', methods = ['GET', 'POST'])
def login():
    form = LoginForm()
    if form.validate_on_submit():
        username = form.username.data
        print(username)
        return username
    return render_template('login.html', form = form)
    
@app.route('/loginn', methods=['POST'])
def loginn():
    form = LoginForm()
    if form.validate_on_submit():
        return "Succeeds"
    else:
        return "Naahh"

登录.html:-

<body>
<form action="/loginn" method="POST">
    Username
  {% if form.username.errors %}
            {{ form.username(class="form-control form-control-lg is-invalid")}}
              {% for error in form.username.errors %}
                <span>{{ error }}</span>
              {% endfor %}
              {% else %}
            {{ form.username(class="form-control form-control-lg")}}

            {% endif %}
              Password
              {% if form.password.errors %}
            {{ form.password(class="form-control form-control-lg is-invalid")}}
              {% for error in form.password.errors %}
                <span>{{ error }}</span>
              {% endfor %}
              {% else %}
            {{ form.password(class="form-control form-control-lg")}}

            {% endif %}
            <button>Submit</button>

</form>
</body>

1 个答案:

答案 0 :(得分:0)

login.html 文件中缺少 CSRF 令牌