Flask-wtf 表单验证意外激活
Flask-wtf form validation unexpectedly activated
我正在努力修改 cookiecutter Flask 应用程序。
我的表格如下所示:
<form class="form-inline" id="registerForm" method="POST" action="/register/" role="form">
<div class="form-group">
<input type="email" class="form-control" id="exampleInputEmail1" placeholder="Enter your email address">
</div>
<button type="submit" class="btn btn-warning btn-lg">Submit!</button>
</form>
和一个 'user' 模型,看起来像:
class User(UserMixin, SurrogatePK, Model):
__tablename__ = 'users'
username = Column(db.String(80), unique=True, nullable=True)
email = Column(db.String(80), unique=True, nullable=False)
#: The hashed password
password = Column(db.String(128), nullable=True)
created_at = Column(db.DateTime, nullable=False, default=dt.datetime.utcnow)
first_name = Column(db.String(30), nullable=True)
last_name = Column(db.String(30), nullable=True)
active = Column(db.Boolean(), default=False)
is_admin = Column(db.Boolean(), default=False)
confirmed = db.Column(db.Boolean, nullable=False, default=False)
confirmed_on = db.Column(db.DateTime, nullable=True)
def __init__(self, username, email, password=None, **kwargs):
db.Model.__init__(self, username, email=email, **kwargs)
if password:
self.set_password(password)
else:
self.password = None
我的计划是只要求提供电子邮件,验证它,然后在用户验证并登录后让用户填写其余字段。所以我希望创建整个对象,但只首先,电子邮件字段已填满。当我通过仅提交电子邮件来测试电子邮件注册表单(上面的html)时,我得到了屏幕截图。我知道千篇一律使用用 flask-wtf 构建的表单,但我不确定为什么要激活此表单验证。为什么我的做法不对?
从源码可以知道:user.py
class RegisterForm(Form):
username = TextField('Username', validators=[DataRequired(), Length(min=3, max=25)])
first_name = TextField('first_name', validators=[DataRequired(), Length(min=3, max=25)])
last_name = TextField('last_name', validators=[DataRequired(), Length(min=3, max=25)])
email = TextField('Email', validators=[DataRequired(), Email(), Length(min=6, max=40)])
password = PasswordField('Password', validators=[DataRequired(), Length(min=6, max=40)])
confirm = PasswordField('Verify password', [DataRequired(), EqualTo('password', message='Passwords must match')])
你可以看到有六个字段,而且都是required(通过DataRequired
验证器),这就是你看到六个错误的原因留言。
注意cookiecutter-flask
只给了你基本的结构,你需要自己修改一些文件。
我正在努力修改 cookiecutter Flask 应用程序。
我的表格如下所示:
<form class="form-inline" id="registerForm" method="POST" action="/register/" role="form">
<div class="form-group">
<input type="email" class="form-control" id="exampleInputEmail1" placeholder="Enter your email address">
</div>
<button type="submit" class="btn btn-warning btn-lg">Submit!</button>
</form>
和一个 'user' 模型,看起来像:
class User(UserMixin, SurrogatePK, Model):
__tablename__ = 'users'
username = Column(db.String(80), unique=True, nullable=True)
email = Column(db.String(80), unique=True, nullable=False)
#: The hashed password
password = Column(db.String(128), nullable=True)
created_at = Column(db.DateTime, nullable=False, default=dt.datetime.utcnow)
first_name = Column(db.String(30), nullable=True)
last_name = Column(db.String(30), nullable=True)
active = Column(db.Boolean(), default=False)
is_admin = Column(db.Boolean(), default=False)
confirmed = db.Column(db.Boolean, nullable=False, default=False)
confirmed_on = db.Column(db.DateTime, nullable=True)
def __init__(self, username, email, password=None, **kwargs):
db.Model.__init__(self, username, email=email, **kwargs)
if password:
self.set_password(password)
else:
self.password = None
我的计划是只要求提供电子邮件,验证它,然后在用户验证并登录后让用户填写其余字段。所以我希望创建整个对象,但只首先,电子邮件字段已填满。当我通过仅提交电子邮件来测试电子邮件注册表单(上面的html)时,我得到了屏幕截图。我知道千篇一律使用用 flask-wtf 构建的表单,但我不确定为什么要激活此表单验证。为什么我的做法不对?
从源码可以知道:user.py
class RegisterForm(Form):
username = TextField('Username', validators=[DataRequired(), Length(min=3, max=25)])
first_name = TextField('first_name', validators=[DataRequired(), Length(min=3, max=25)])
last_name = TextField('last_name', validators=[DataRequired(), Length(min=3, max=25)])
email = TextField('Email', validators=[DataRequired(), Email(), Length(min=6, max=40)])
password = PasswordField('Password', validators=[DataRequired(), Length(min=6, max=40)])
confirm = PasswordField('Verify password', [DataRequired(), EqualTo('password', message='Passwords must match')])
你可以看到有六个字段,而且都是required(通过DataRequired
验证器),这就是你看到六个错误的原因留言。
注意cookiecutter-flask
只给了你基本的结构,你需要自己修改一些文件。