Flask框架web开发 第三章 Web表单(在windows系统下)

1.普通的表单验证
Web表单

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验证输入值不在可选列表中
代码

app.py

# -*- coding:utf-8 -*-
from flask import Flask, render_template, request

app = Flask(__name__)

'''
目的:实现一个简单的登录逻辑的处理
1. 路由需要get和post两种请求方式 --> 需要判断请求方式
2. 获取请求的参数
3. 判断参数是否填写 & 密码是否相同
4. 如果判断都没有问题,就返回一个success
'''

@app.route('/', methods=['GET','POST'])
def index():
    # request: 请求对象 --> 获取请求方式、数据

    # 1. 判断请求方式
    if request.method == 'POST':
        # 2.获取请求的参数
        username = request.form.get('username')
        password = request.form.get('password')
        password2 = request.form.get('password2')
        print(password)

        # 3.判断参数是否填写 & 密码是否相同
        if not all([username, password, password2]):
            print('参数不完整')
        elif password != password2:
            print('密码不一致')
        else:
            return 'success'

    return render_template('index.html')


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

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form method="post">
    <label>用户名:</label><input type="text" name="username"><br/>
    <label>密码:</label><input type="password" name="password" ><br/>
    <label>确认密码:</label><input type="password" name="password2"><br/>
    <input type="submit" value="提交"><br/>
</form>

</body>
</html>
2.flash消息快闪

本节优化:代码出现问题时只能通过控制台查看,希望如果出错可以在网页中显示
给模板传递消息,需要使用flash

代码

app.py

# -*- coding:utf-8 -*-
from flask import Flask, render_template, request, flash

app = Flask(__name__)
app.secret_key = 'flask'
'''
目的:实现一个简单的登录逻辑的处理
1. 路由需要get和post两种请求方式 --> 需要判断请求方式
2. 获取请求的参数
3. 判断参数是否填写 & 密码是否相同
4. 如果判断都没有问题,就返回一个success
'''

'''
给模板传递消息
flash --> 需要对内容加密,因此需要设置secret_key,做加密消息的混淆
模板中需要遍历消息
'''
@app.route('/', methods=['GET','POST'])
def index():
    # request: 请求对象 --> 获取请求方式、数据

    # 1. 判断请求方式
    if request.method == 'POST':
        # 2.获取请求的参数
        username = request.form.get('username')
        password = request.form.get('password')
        password2 = request.form.get('password2')
        print(password)

        # 3.判断参数是否填写 & 密码是否相同
        if not all([username, password, password2]):
            # print('参数不完整')
            flash(u'参数不完整')
        elif password != password2:
            # print('密码不一致')
            flash(u'密码不一致')
        else:
            return 'success'

    return render_template('index.html')


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

index.html

    {# 使用遍历获取闪现的消息 #}
    {% for message in get_flashed_messages() %}
        {{ message }}
    {% endfor %}
  • 使用 Flask-WTF 需要配置参数 SECRET_KEY(app.secret_key = 'flask'),CSRF_ENABLED是为了CSRF(跨站请求伪造)保护。 SECRET_KEY用来生成加密令牌,当CSRF激活的时候,该设置会根据设置的密匙生成加密令牌。否则会出现下边错误:
    在这里插入图片描述- 由于编码问题,需要加‘u’( flash(u’密码不一致’)),否则会出现下边错误
    在这里插入图片描述
3.WTF表单的显示

首先,安装FLASK-WTF

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值