flask学习笔记代码篇-12

flask13-WTF表单

Web 表单是 Web 应用程序的基本功能。
它是HTML页面中负责数据采集的部件。表单有三个部分组成:表单标签、表单域、表单按钮。表单允许用户输入数据,负责HTML页面数据采集,通过表单将用户输入的数据提交给服务器。
在Flask中,为了处理web表单,我们可以使用 Flask-WTF 扩展,它封装了 WTForms,并且它有验证表单数据的功能
WTForms支持的HTML标准字段

字段对象

说明

StringField

文本字段

TextAreaField

多行文本字段

PasswordField

密码文本字段

HiddenField

隐藏文件字段

DateField

文本字段,值为 datetime.date 文本格式

DateTimeField

文本字段,值为 datetime.datetime 文本格式

IntegerField

文本字段,值为整数

DecimalField

文本字段,值为decimal.Decimal

FloatField

文本字段,值为浮点数

BooleanField

复选框,值为True 和 False

RadioField

一组单选框

SelectField

下拉列表

SelectMutipleField

下拉列表,可选择多个值

FileField

文件上传字段

SubmitField

表单提交按钮

FormField

把表单作为字段嵌入另一个表单

FieldList

一组指定类型的字段

WTForms常用验证函数

验证函数

说明

DataRequired

确保字段中有数据

EqualTo

比较两个字段的值,常用于比较两次密码输入

Length

验证输入的字符串长度

NumberRange

验证输入的值在数字范围内

URL

验证URL

AnyOf

验证输入值在可选列表中

NoneOf

验证输入值不在可选列表中

使用 Flask-WTF 需要配置参数 SECRET_KEY。
CSRF_ENABLED是为了CSRF(跨站请求伪造)保护。 SECRET_KEY用来生成加密令牌,当CSRF激活的时候,该设置会根据设置的密匙生成加密令牌。

from flask import Flask, render_template, request, flash
from flask_wtf import FlaskForm
from wtforms import StringField, PasswordField, SubmitField
from wtforms.validators import DataRequired, EqualTo

app = Flask(__name__)
app.secret_key = 'bvdhkbdvskhbvdsh'  # 这个值随意输入
'''
/根节点是普通表单、 demo1是WTF表单,使用两种表单提交,验证其过程以及闪现消息的捕获。
'''


# 表单类
class RegisterForm(FlaskForm):
    username = StringField('用户名:', validators=[DataRequired()])
    password = PasswordField('密码:', validators=[DataRequired()])
    password2 = PasswordField('确认密码:', validators=[DataRequired(), EqualTo('password', '密码填入的不一致')])
    submit = SubmitField('提交')


@app.route('/demo1', methods=["get", "post"])
def demo1():
    regist_form = RegisterForm()
    if regist_form.validate_on_submit():  # 内置校验,关联RegisterForm类中的validators属性的所有验证
        # 1. 取到注册所对应的数据
        username = request.form.get("username")
        password = request.form.get("password")
        password2 = request.form.get('password2')
        # 2. 执行注册操作
        print("%s %s %s" % (username, password, password2))
        return "注册成功"
    else:
        if request.method == 'POST':
            return '获得post请求'
    return render_template('html/04-tempWTF.html', form=regist_form)


@app.route('/', methods=['GET', 'POST'])
def get_form():
    if request.method == 'POST':
        username = request.form.get('username')
        password = request.form.get('password')
        refirmpwd = request.form.get('refirmpwd')
        print(username)
        if not all([username, password, refirmpwd]):
            flash('参数不完整')
        elif password != refirmpwd:
            flash('密码不一致')
        else:
            return 'success'
    return render_template('html/02-form.html')


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

02-form.html




    
    form


    
        用 户 名:         密    码:         确认密码:                  
        {#使用遍历获取闪现的消息#}         {% for message in get_flashed_messages() %}             {{ message }}         {% endfor %}    

04-tempWTF.html




    
    WTF



    
        {{ form.csrf_token() }}         {{ form.username.label }}{{ form.username }}         {{ form.password.label }}{{ form.password }}         {{ form.password2.label }}{{ form.password2 }}         {{ form.submit }}    
   

 

你可能感兴趣的:(flask框架基础)