Flask模型类表单

WTForms支持的HTML标准字段

 字段对象							说明
 StringField						文本字段
 TextAreaField						多行文本字段
 PasswordField						密码文本字段
 HiddenField						隐藏文本字段
 DateField							文本字段,值为datetime.date格式
 DateTimeField						文本字段,值为datetime.datetime格式
 IntegerField						文本字段,值为整数
 DecimalField						文本字段,值为decimal.Decimal
 FloatField							文本字段,值为浮点数
 BooleanField						复选框,值为TrueFalse
 RadioField							一组单选框
 SelectField						下拉列表
 SelectMultipleField				下拉列表,可选择多个值
 FileField							文本上传字段
 SubmitField						表单提交按钮
 FormField							把表单作为字段嵌入另一个表单
 FieldList							一组指定类型的字段

WTForms常用验证函数

 验证函数							说明
 DataRequired						确保字段中有数据
 EqualTo							比较两个字段的值,常用于比较两次密码输入
 Length								验证输入的字符串长度
 NumberRange						验证输入的值在数字范围内
 URL								验证URL
 AnyOf								验证输入值在可选列表中
 NoneOf								验证输入值不在可选列表中

配置参数

app.config["SECRET_KEY"] = "随便写一个字符串"

视图定义表单的模型类

 class RegisterForm(FlaskForm):
     """自定义的注册表单模型类"""
     # StringField  文本字段   名字            验证器
     # DataRequired 保证数据必须填写,并且不能为空
     # user_name这个字段在进行校验的时候不合法,我们给她提示信息,我们写的中文参数就是提示信息
     user_name = StringField(label=u"用户名", validators=[DataRequired(u"用户名不能为空")])
     # PasswordField 密码文本字段
     password = PasswordField(label=u"密码", validators=[DataRequired(u"密码不能为空")])
     # EqualTo 比较两个字段的值,常用于比较两次密码输入
     # EqualTo 第一个参数跟谁做比较, 第二个参数校验不合格的提示信息
     password2 = PasswordField(label=u"确认密码", validators=[DataRequired(u"确认密码不能为空"), EqualTo("password", u"两次密码不一致")])
     # SubmitField 表单提交按钮
     submit = SubmitField(label=u"提交")
 
 
 @app.route("/register", methods=["GET", "POST"])
 def register():
     """"""
     # 创建表单对象, 如果是post请求, 前端发送了数据, flask会把数据在构造form对象的时候, 存放到对象中
     form = RegisterForm()
 
     # 判断form中的数据是否合理
     # 如果form中的数据完全满足所有的验证器, 则返回真, 否则返回假
     # 是get请求方式form历史没有数据的, 这就是假, 是post请求方式判断所有数据是否满足验证器的验证,有一条不合法,也是返回假
     if form.validate_on_submit():
         # 表示验证合格
         # 提取数据 form.user_form是一个对象要拿它的数据就是点data
         uname = form.user_name.data
         pwd = form.password.data
         pwd2 = form.password2.data
         print(uname, pwd, pwd2)
         session["user_name"] = uname
         url = url_for("login")
         return redirect(url)		
     return render_template("register.html", form=form)
 
 if __name__ == '__main__':
     app.run(debug=True)

模板页面:

<form method="post">
       #设置csrf_token
       {{ form.csrf_token() }}
       {{ form.us.label }}
       <p>{{ form.us }}</p>
       {{ form.ps.label }}
       <p>{{ form.ps }}</p>
       {{ form.ps2.label }}
       <p>{{ form.ps2 }}</p>
       <p>{{ form.submit() }}</p>
       {% for x in get_flashed_messages() %}
           {{ x }}
       {% endfor %}
</form> 
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

只因为你温柔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值