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

使用 Flask-WTF 需要配置参数 SECRET_KEY。

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

代码验证

使用 html 自带的表单

  • 创建模板文件 login.html,在其中直接写form表单:
<form method="post"><label>用户名:</label><input type="text" name="username" placeholder="请输入用户名"><br/><label>密码:</label><input type="password" name="password" placeholder="请输入密码"><br/><label>确认密码:</label><input type="password" name="password2" placeholder="请输入确认密码"><br/><input type="submit" value="注册">
</form>{% for message in get_flashed_messages() %}{{ message }}
{% endfor %}
  • 视图函数中获取表单数据验证登录逻辑:
@app.route('/demo1', methods=["get", "post"])
def demo1():if request.method == "POST":# 取到表单中提交上来的三个参数username = request.form.get("username")password = request.form.get("password")password2 = request.form.get("password2")if not all([username, password, password2]):# 向前端界面弹出一条提示(闪现消息)flash("参数不足")elif password != password2:flash("两次密码不一致")else:# 假装做注册操作print(username, password, password2)return "success"return render_template('temp_register.html')

使用 Flask-WTF 实现表单

  • 配置参数,关闭 CSRF 校验
 app.config['WTF_CSRF_ENABLED'] = False

CSRF:跨站请求伪造,后续会讲到

模板页面:

<form method="post">{{ form.username.label }} {{ form.username }}<br/>{{ form.password.label }} {{ form.password }}<br/>{{ form.password2.label }} {{ form.password2 }}<br/>{{ form.submit }}
</form>

视图函数:


from flask import Flask,render_template, flash
#导入wtf扩展的表单类
from flask_wtf import FlaskForm
#导入自定义表单需要的字段
from wtforms import SubmitField,StringField,PasswordField
#导入wtf扩展提供的表单验证器
from wtforms.validators import DataRequired,EqualToapp = Flask(__name__)
app.config['SECRET_KEY']='SECRET_KEY'#自定义表单类,文本字段、密码字段、提交按钮
class RegisterForm(FlaskForm):username = StringField("用户名:", validators=[DataRequired()])password = PasswordField("密码:", validators=[DataRequired()])password2 = PasswordField("确认密码:", validators=[DataRequired(), EqualTo("password")])submit = SubmitField("注册")#定义根路由视图函数,生成表单对象,获取表单数据,进行表单数据验证
@app.route('/demo2', methods=["get", "post"])
def demo2():register_form = RegisterForm()# 验证表单if register_form.validate_on_submit():# 如果代码能走到这个地方,那么就代码表单中所有的数据都能验证成功username = request.form.get("username")password = request.form.get("password")password2 = request.form.get("password2")# 假装做注册操作print(username, password, password2)return "success"else:if request.method == "POST":flash("参数有误或者不完整")return render_template('temp_register.html', form=register_form)if __name__ == '__main__':app.run(debug=True)

flask基础十四之wtf表单相关推荐

  1. Web框架——Flask系列之WTF表单验证练习(七)

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

  2. Flask学习与项目实战9:WTF表单验证

    1.WTF表单验证介绍 Flask-WTF是简化了WTForms操作的一个第三方库.WTForms表单的两个主要功能是验证用户提交数据的合法性以及渲染模板.当然还包括一些其他的功能:CSRF保护,文件 ...

  3. 【flask】04.wtf表单的全部用法实现

    学到了flask wtf 表单,网上想查看一下wtf表单的全部用法,结果都是StringFiled SubmitField PasswordField的用法, 反正都是学习,结合源码和借鉴(抄袭~~) ...

  4. Flask 核心技术 - WTF表单、上下文、表单验证、蓝图

    flask 获取请求参数 request request 就是flask中代表当前请求的 request 对象,其中一个请求上下文变量(理解成全局变量,在视图函数中直接使用可以取到当前本次请求) 常用 ...

  5. Python-flask的wtf表单应用

    Python-flask的wtf表单应用 导入wtf库 在一个flask导入flask-wtf库 from flask_wtf import FlaskForm 自定义表单类 在创立表单的时候我们需要 ...

  6. 【前端学习之HTMLCSS进阶篇】-- HTML第四篇 -- 美化表单

    [前端学习之HTML&CSS进阶篇]-- HTML第四篇 – 美化表单 文章目录 [前端学习之HTML&CSS进阶篇]-- HTML第四篇 -- 美化表单 前言 一.新的伪类 1. f ...

  7. 第三十篇,Django表单与模型

    什么是表单: 表单是搜集用户数据信息的各种表单元素的集合,作用是实现网页上的数据交互,用户在网站输入信息,然后提交到网站服务器端进行处理(如数据录入和用户登录.注册等). 用户表单是web开发的一项基 ...

  8. 企业级 SpringBoot 教程 (十九) 验证表单信息

    这篇文篇主要简述如何在springboot中验证表单信息.在springmvc工程中,需要检查表单信息,表单信息验证主要通过注解的形式. 构建工程 创建一个springboot工程,由于用到了 web ...

  9. 使用 jQuery Mobile 与 HTML5 开发 Web App (四) —— jQuery Mobile 表单上

    一.表单组件基础 1.组件简介 jQuery Mobile 中的表单组件是基于标准 HTML ,然后在此基础上增强样式,因此即使浏览器不支持 jQuery Mobile 表单仍可正常使用.需要注意的是 ...

最新文章

  1. python爬取新闻并归数据库_Python爬取数据并写入MySQL数据库操作示例
  2. ERROR: Failed to find Platform SDK with path: platforms;android-27
  3. python Day6 面向对象学习
  4. 我司那产品经理丨第二期
  5. 若依(基于SpringBoot的权限管理系统)集成MobileIMSDK实现IM服务端的搭建
  6. 201621123028《Java程序设计》第5周学习总结
  7. “双击Pycharm无响应”解决方案
  8. 微课|Python搜索有向图中的路径
  9. ajax以base64上传图片到django
  10. python之解析csv
  11. maven库的查询和配置
  12. Python 水仙花数练习
  13. Xshell学生版免费下载使用
  14. 变色龙引导r2795
  15. Cookie自动登录认证
  16. Typora高亮颜色设置
  17. matlab氢原子杂化轨道,原子及分子轨道演示软件——Orbital Viewer
  18. 那么问题来了:为什么苹果设计被黑出翔还能大卖呢?
  19. 动视是否磨灭了暴雪的灵魂?
  20. feign 传 MultipartFile Error converting request body 序列化 错误

热门文章

  1. Linux命令-推荐
  2. 非负矩阵图像融合MATLAB,图像融合的非负矩阵分解算法
  3. Qt制作的PLC开发软件
  4. mysql存储表情微信昵称
  5. 传统行业的新出路:社群
  6. Graph Attention Network (GAT) 图注意力模型
  7. webpack打包报错:Cannot find module 'resolve-cwd'
  8. okHttp网络请求结果Response返回主线程中
  9. oracle varchar 32k,12C改varchar2为32K
  10. linux 多线程ppn,Linux下如何查看CPU信息, 包括位数和多核信息