安装模块
导入模块
定义表单控件与认证条件
# 类似于模型类
class RegisterForm(flask_wtf.FlaskForm):
user_name = wtforms.StringField(label='用户名', validators=[wtforms.validators.DataRequired('用户名不能为空')])
password = wtforms.PasswordField(label='密码', validators=[wtforms.validators.DataRequired('密码不可为空')])
password2 = wtforms.PasswordField(label='确认密码', validators=[wtforms.validators.DataRequired('验证密码不可为空'),
wtforms.validators.EqualTo('password','不一致')])
submit = wtforms.SubmitField(label='提交')
定义了文本输入框,密码框,提交按钮
验证表单
form.validate_on_submit()
如果用户输入的内容符合限定,为True,否则为False
前端
测试
前端的注意
表单的扩展
表单的操作
安装好flask_wtf后
导入后使用
表单的字段类型,在wtforms中
字段的验证
实例化字段一个字段的时候
传入参数 validators为一个列表,列表中填入相对应的验证数据
例子
class RegisterForm(flask_wtf.FlaskForm):
user_name = wtforms.StringField(label='用户名', validators=[wtforms.validators.DataRequired('用户名不能为空')])
password = wtforms.PasswordField(label='密码', validators=[wtforms.validators.DataRequired('密码不可为空')])
password2 = wtforms.PasswordField(label='确认密码', validators=[wtforms.validators.DataRequired('验证密码不可为空'),
wtforms.validators.EqualTo('password', '两次不一样')])
@app.route("/register")
def register():
form = RegisterForm()
return flask.render_template("register.html", form=form)
前端
<form action="post">
<!-- {{ form.csrf_token() }}-->
{{ form.user_name.label}}
{{ form.user_name }}
<!-- 错误提示-->
{{ form.user_name.errors }}
</form>
代码
在访问页面的时候
需要 加上一个括号即可
模板语句
使用表单校验
在视图中
如果get请求不带参数
form.validate_on__submig():
结果为false
post表单加csrf