Flask——创建表单模型类与模板使用
首先引入表单扩展Flask-WTF:
pip install Flask-WTF
使用Flask-WTF扩展可以验证后端接受到的信息,防止恶意攻击。
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
from flask_wtf import FlaskForm
from wtforms import StringField,PasswordField,SubmitField
from wtforms.validators import DataRequired,EqualToapp = Flask(__name__)# 配置参数SECRET_KEY
app.config["SECRET_KEY"] = "ASDHJAVDHJASDVASYJDV"# 定义表单的模型类
class RegisterFrom(FlaskForm):"""自定义的注册表单模型类"""# StringField,PasswordField的参数分别是 模块名字,对应验证器# DataRequired 保证数据必须填写,并且不能为空user_name = StringField(label = u"用户名",validators=[DataRequired(u"用户名不能为空")])user_password = PasswordField(label=u"密码",validators=[DataRequired(u"密码不能为空")])same_password = PasswordField(label=u"确认密码", validators=[DataRequired(u"密码不能为空"),EqualTo("user_password",u"两次密码不一致")])submit = SubmitField(label="提交")@app.route("/register")
def index():form = RegisterFrom()return render_template("register.html",form = form)if __name__ == '__main__':app.run(debug = True,port=8000)
其中在HTML中有着if和for的控制语句,其格式分别对应为:
if语句:
{% if % } {% endif %}
for语句:
{% for item in samples %} {% endfor %}
对应的视窗文件编写:
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><form method="post">{{ form.user_name.label }}<p>{{form.user_name}}</p>{% for msg in form.user_name.errors %}<p>{{msg}}</p>{% endfor %}{{ form.user_password.label }}<p>{{form.user_password}}</p>{% for msg in form.user_password.errors %}<p>{{msg}}</p>{% endfor %}{{ form.same_password.label }}<p>{{form.same_password}}</p>{% for msg in form.same_password.errors %}<p>{{msg}}</p>{% endfor %}{{form.submit}}</form>
</body>
</html>
最终呈现的结果为:
参数类型能提前进行设定,输入的参数会进行校验,当输入的参数不符合设定的参数类型时能进行报错。
以上就是flask创建表单模型类与模板使用的基本方法,有疑问的欢迎评论或私信博主啊。
Flask——创建表单模型类与模板使用相关推荐
- Flask后端笔记(三)Jinja2模板、过滤器、表单、宏、模板继承、包含
Flask后端笔记 Jinja2模板 基本流程 变量 过滤器 字符串过滤器 支持链式使用过滤器 列表过滤器 自定义过滤器 表单 不使用Flask-WTF扩展时,表单需要自己处理 使用Flask-WTF ...
- element手机验证格式_Laravel 自定义封装表单验证类
Laravel版本6.x 场景:为添加或者更新用户的时候自动验证表单 创建表单请求 使用 Artisan 命令 make:request 来创建表单请求类: php artisan make:requ ...
- 如何通过云模板创建表单?丨三叠云教程
三叠云官网https://www.sandieyun.com/ 1. 简介 1.1 功能简介 云模板中心是表单的共享中心,里面承载着众多三叠云接入企业所提供的优秀成熟的表单案例,内容详尽,范围涵盖各行 ...
- Flask Web表单
title: flask学习笔记 subtitle: 3. flask Web表单 date: 2018-12-14 10:17:28 --- Web表单 HTML表单是用户和web站点或应用程序之间 ...
- 3YAdmin-专注通用权限控制与表单的后台管理系统模板
3YAdmin基于React+Antd构建.GitHub搜索React+Antd+Admin出来的结果没有上百也有几十个,为什么还要写这个东西呢? 一个后台管理系统的核心我认为应该是权限控制,表单以及 ...
- angular js创建表单_如何优雅的使用 Angular 表单验证
随便说说,这一节可以跳过 去年参加 ngChine 2018 杭州开发者大会的时候记得有人问我: Worktile 是什么时候开始使用 Angular 的,我说是今年(2018年) 3 月份开始在新模 ...
- webform快速创建表单内容文件--oracle 数据库
使用方法 前台页面这样写就足够了 <form class="stdform" runat="server"><div id="fie ...
- JavaFX官方教程(五)之在JavaFX中创建表单
翻译自 在JavaFX中创建表单 在开发应用程序时,创建表单是一项常见活动.本教程将向您介绍屏幕布局的基础知识,如何将控件添加到布局窗格以及如何创建输入事件. 在本教程中,您将使用JavaFX构建如 ...
- dedecms 自定义表单html,dedecms自定义表单和自定义表单如何用自己模板教程
dedecms自定义表单和自定义表单如何用自己模板视频教程,无声,但有具体的操作和演示的模板,以及详细的说明. 在线预约一个表单,后台可以直接实现自定义表单功能 注意看有个 表单的id 其他的不用管, ...
最新文章
- 苏宁V购 不为拯救 只求改变
- Messages 贪心,期望,概率,模拟(2000)
- 在Linux上编写并运行Python文件
- 博士申请 | 纽约州立大学布法罗分校招收ML/AI方向全奖博士生
- vue 初始化方法_前端发展方向指南—Vue源码初始化
- Oracle data type number
- c语言mc协议,easymc - C语言开发的简易消息通道库
- Git学习总结(25)——Git 常用的分支开发模式及规范总结
- Elasticsearch--进阶-term_keyword查询---全文检索引擎ElasticSearch工作笔记015
- 设计模式学习笔记--Flyweight享元模式
- html本地修改浏览器自动更新,更改html代码后网页不更新
- Unity之FBX文件操作学习笔记(一)
- 合上电脑盖时,电脑断网-原因及解决方法
- DDS产生双频正弦波及叠加
- 城市简码_WordPress的自定义简码
- 声纹识别demo_语音识别、声纹识别的区别及测试
- [渝粤教育] 九江学院 药理学 参考 资料
- docker离线安装与卸载
- Benchmark分析[4]: parsec
- C# 程序创建word文件与表格