html表单form字体颜色_Python——flask_wtf验证form表单

前言:

web表单是web应用程序的基本功能。它是HTML页面中负责数据采集的部件。表单有三个部分组成:表单标签、表单域、表单按钮。表单允许用户输入数据,负责HTML页面数据采集,通过表单将用户输入的数据提交给服务器。

在Flask中,为了处理web表单,我们一般使用Flask-WTF扩展,它封装了WTForms,并且它有验证表单数据的功能。

具体内容:

下午看一个表单处理时候翻了点小错误,模版中action顺手写了一个地址,然后这个插件一直没验证,详细记录下具体用法和模版示例,具体如下:

falsk运行py文件:

# coding:utf-8
from flask import Flask, render_template, redirect, url_for, session
from flask_wtf import FlaskForm
from wtforms import StringField, PasswordField, SubmitField
from wtforms.validators import DataRequired, EqualTo

app = Flask(__name__)

app.config["SECRET_KEY"] = "xhosd6f982yfhowefy29f"


# 定义表单的模型类
class RegisterForm(FlaskForm):
    """自定义的注册表单模型类"""
    #                       名字            验证器/验证器
    # DataRequired 保证数据必须填写,并且不能为空
    user_name = StringField(label=u"用户名", validators=[DataRequired(u"用户名不能为空")])
    password = PasswordField(label=u"密码", validators=[DataRequired(u"密码不能为空")])
    password2 = PasswordField(label=u"确认密码", validators=[DataRequired(u"确认密码不能为空"),
                                                         EqualTo("password", u"两次密码不一致")])
    submit = SubmitField(label=u"提交")


@app.route("/register", methods=["GET", "POST"])
def register():
    # 创建表单对象, 如果是post请求,前端发送了数据,flask会把数据在构造form对象的时候,存放到对象中
    form = RegisterForm()
    # 判断form中的数据是否合理
    # 如果form中的数据完全满足所有的验证器,则返回真,否则返回假
    if form.validate_on_submit():
    #if form.validate():     #验证两种方式均有验证功能,validate验证应用范围可能会更广一些;
        # 表示验证合格
        # 提取数据
        uname = form.user_name.data
        pwd = form.password.data
        pwd2 = form.password2.data
        print(uname, pwd, pwd2)
        session["user_name"] = uname
        return redirect(url_for("index"))

    return render_template("register.html", form=form)


@app.route("/index")
def index():
    user_name = session.get("user_name", "")
    return "hello %s" % user_name


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

在同级目录新建templates文件夹同时新建register.html文件,html静态文件中按照模版方式编写样式部分随手写的,请忽略:(看清楚模版中的form没有action)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .box{
            border:1px solid;
            padding:50px 100px;
            width:300px;
            height:400px;
            font-size:20px;
        }
    </style>
</head>
<body>
<div class="box">
     <form method="post">
         <p>#设置csrf_token</p>
        {{ form.csrf_token() }}
        {{ form.user_name.label }}
        <p>{{ form.user_name }}</p>
        {{ form.password.label }}
        <p>{{ form.password }}</p>
        {{ form.password2.label }}
        <p>{{ form.password2 }}</p>
        <p>{{ form.submit() }}</p>
        {% for x in get_flashed_messages() %}
            {{ x }}
        {% endfor %}
     </form>
</div>
</body>
</html>

然后搜集了一些Wtform支持的html的标准字段,以及常用的验证函数:

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

常用的验证函数:

验证函数	         说明
DataRequired	确保字段中有数据
EqualTo	        比较两个字段的值,常用于比较两次密码输入
Length	        验证输入的字符串长度
NumberRange	验证输入的值在数字范围内
URL	        验证URL
AnyOf	        验证输入值在可选列表中
NoneOf	        验证输入值不在可选列表中
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值