WTForms验证错误无效

时间:2017-11-16 13:24:34

标签: python flask wtforms flask-wtforms flask-login

我正在尝试创建一个登录表单,如果用户名为空,则会抛出错误。

pods

html代码如下:

from flask import Flask, render_template
from flask_wtf import FlaskForm
from wtforms import StringField, PasswordField, BooleanField
from wtforms.validators import InputRequired, Email, length, ValidationError

app = Flask(__name__)
app.config['SECRET_KEY'] = 'This is a secret'
class LoginForm(FlaskForm):
  username = StringField('username', validators=[InputRequired()])
  password = PasswordField('password')

@app.route('/form', methods=['GET','POST'])
def form():
  form=LoginForm()
  return render_template('form.html', form=form)


if __name__== '__main__':
  app.run(debug=True)

显然,跳过for循环,当用户字段为空时单击提交按钮没有任何反应

2 个答案:

答案 0 :(得分:0)

您根本没有在form函数中验证表单。编辑该功能并添加验证行。验证后发现错误。否则,模板中的form变量将不会包含错误属性。以下应该做:

@app.route('/form', methods=['GET','POST'])
def form():
    this_form = LoginForm()
    this_form.validate()
    return render_template('form.html', form=this_form)

此外,请避免命名您的表单form,因为您已将该函数命名为form。您应该更改表单的函数名称或变量名称。

我希望这会有所帮助。

答案 1 :(得分:0)

假设您的表单将使用POST方法发送,您必须验证表单数据(如果已提交)。使用flask-wtf非常简单:

@app.route('/form', methods=['GET','POST'])
def check_form():
    form = LoginForm()
    if form.validate_on_submit():
        # do something
        return # something 
    return render_template('form.html', form=form)

我邀请您详细了解flask-wtf