Flask-WTF的使用


一、安装Flask-WTF

Flask-WTFWTForms 进行了封装使它能够在 Flask 框架中可以被调用,其中 Flask-WTF 的功能都是继承自 WTForms ,因此安装 Flask-WTF 时会自动安装 WTForms 模块。

  • 使用 pip 进行安装
  1. pip install flask-wtf
  • 查看安装结果

二、创建表单类

表单类可以继承自Flask-WTF封装的FlaskForm类,可以从wtforms导入表单字段的类型,如下表单类的创建:

  1. # -*- coding: utf-8 -*-
  2. from flask_wtf import FlaskForm
  3. from wtforms import StringField, RadioField, DateField, DecimalField, SelectField
  4. class EmployeeForm(FlaskForm):
  5. name = StringField('姓名')
  6. gender = RadioField('性别', default='男')
  7. job = StringField('职位')
  8. birthdate = DateField('出生日期')
  9. idCard = StringField('身份证号')
  10. address = StringField('地址')
  11. salary = DecimalField('工资')
  12. department = SelectField('部门')

三、创建视图方法

根据创建好的表单类,我们就可以创建我们的视图函数,来处理和呈现我们的代码逻辑:

  1. # -*- coding: utf-8 -*-
  2. from flask import render_template
  3. from flask.views import MethodView
  4. from pms.forms import EmployeeForm
  5. class EmployeeEditOrCreateView(MethodView):
  6. def get(self, id=None):
  7. form = EmployeeForm()
  8. return render_template('admin/emp-create-or-edit.html', form=form)
  9. def post(self, id=None):
  10. pass
  11. # 添加视图函数规则,并添加视图函数的endpoint
  12. employee.add_url_rule('/create_or_edit/<id>', view_func=EmployeeEditOrCreateView.as_view('emp_create_or_edit'))

四、前台页面展示

在前台页面我们就可以使用我们传递的表单类进行form表单控件的替换了:

  1. <form class="form-horizontal" role="form" method="post" action="{{ url_for('admin.emp_add') }}">
  2. {# 姓名 #}
  3. <div class="form-group">
  4. {# <label for="name" class="col-lg-2 col-sm-2 control-label">姓名</label>#}
  5. {# 使用flask-wtf表单控件之后,label标签也可以省略#}
  6. {{ form.name.label(class="col-lg-2 col-sm-2 control-label") }}
  7. <div class="col-lg-6">
  8. {# <input type="text" class="form-control" id="name" name="name">#}
  9. {# 如果你希望某些控件的属性也添加进来,可以直接在name中加入,方式如下:#}
  10. {{ form.name(class="form-control") }}
  11. </div>
  12. </div>
  13. </form>

展示效果:

五、补充

Flask-WTF 默认为每个表单启用了 CSRF 保护,它会为我们自动生成 CSRF 令牌。在Flask-WTF 中默认情况会使用程序密钥对 CSRF 令牌进行签名,所以我们需要为程序设置密钥:

  1. app.secret_key = 'HENjsa3IJ7HfF9KG'

Flask-WTF的使用的更多相关文章

  1. Flask - WTF和WTForms创建表单

    目录 Flask - WTF和WTForms创建表单 一. Flask-WTF 1.创建基础表单 2.CSRF保护 3.验证表单 4.文件上传 5.验证码 二. WTForms 1. field字段 ...

  2. 【Flask】 结合wtforms的文件上传表单

    表单中的文件上传 基本的表单渲染,表单类设置等等就不多说了,参看另一个文章即可.但是那篇文章里没有提到对于FileField,也就是上传文件的表单字段是如何处理,后端又是如何实现接受上传过来的文件的. ...

  3. Flask 入门(第一篇)

    1. 认识 Flask Flask 是一个微型 Web 框架,依赖于 jinjia2 模板系统和 Werkzeug WSGI(本质为 Socket 服务端) 服务,默认情况不支持数据库抽象层.表单验证 ...

  4. 用 Flask 来写个轻博客 (13) — M(V)C_WTForms 服务端表单检验

    目录 目录 前文列表 WTForms WTF 的基础使用 常用的字段类型 fieldsDateField fieldsIntegerField fieldsFloatField fieldsStrin ...

  5. flask修改flask_wtf使其支持json数据的validation验证

    flask默认是前后端不分离策略,前端通过flask+wtf表单来传递post,put...等数据. 现在前后端分离是趋势,那么对flask进行一定的修改,变为前后端分离,在前端页面中请求后端,那么请 ...

  6. Flask Jinja2 知识点

    Jinja2模板引擎使用以下分隔符从HTML转义. {% ... %}用于语句 {{ ... }}用于表达式可以打印到模板输出 {# ... #}用于未包含在模板输出中的注释 # ... ##用于行语 ...

  7. python flask框架详解

    Flask是一个Python编写的Web 微框架,让我们可以使用Python语言快速实现一个网站或Web服务.本文参考自Flask官方文档, 英文不好的同学也可以参考中文文档 1.安装flask pi ...

  8. 不管你是否已经准备面试, 这45道Python面试题都对你非常有帮助!(mark!)

    1)什么是Python?使用Python有什么好处? Python是一种编程语言,包含对象,模块,线程,异常和自动内存管理.蟒蛇的好处在于它简单易用,可移植,可扩展,内置数据结构,并且它是一个开源的. ...

  9. Python面试应急5分钟!

    ​ 不论你是初入江湖,还是江湖老手,只要你想给自己一个定位那就少不了面试!面试的重要性相信大家都知道把,这就是我们常说的“第一印象”,给大家说一下我的面试心得把,面试前的紧张是要的,因为这能让你充分准 ...

  10. python 全栈之路

    目录 Python 全栈之路 一. Python 1. Python基础知识部分 2. Python -函数 3. Python - 模块 4. Python - 面对对象 5. Python - 文 ...

随机推荐

  1. CRT小键盘输入乱码

    Options --> Session Options --> Terminal --> Emulation --> Modes 去选中 Enable keypad mode ...

  2. Spring框架AOP

    aop技术是面向切面编程思想,作为OOP的延续思想添加到企业开发中,用于弥补OOP开发过程中的缺陷而提出的编程思想.AOP底层也是面向对象:只不过面向的不是普通的Object对象,而是特殊的AOP对象 ...

  3. Python __dict__和vars()

    1 __dict__ 设想这样一个场景.有一个字典,从某个地方获取的,比如http请求发过来的,比如从redis中hgetall出来的.我要根据这个字典来构建一个对象. 比如类 class Perso ...

  4. ph:做参考

    1  波动学 <伯克利物理学教程>第三卷  上.下册2  场论(朗道)3  场论与粒子物理学(上册)(李政道)出国留学必备书之一!4  场论与粒子物理学(下册)(李政道)5  非平衡态热力 ...

  5. [转][C#]基础连接已经关闭 未能为 SSL/TLS 安全通道建立信任关系

    来自:https://www.cnblogs.com/waw/p/8286608.html 代码部分: static TestApplication(){ ServicePointManager.Se ...

  6. 使用python获取微医数据

    用到的包: BeautifulSoup pymysql requests json 碰到的问题: 1.医生查询分页数据不能超过38页,超过无法返回数据 2.某些字段对应的html元素包含一些无效的cl ...

  7. Swift 条件语句

    条件语句通过设定的一个或多个条件来执行程序,在条件为真时执行指定的语句,在条件为 false 时执行另外指定的语句. 可以通过下图来简单了解条件语句的执行过程: Swift 提供了以下几种类型的条件语 ...

  8. Java FTP客户端开源类库 edtFTPj

    edtFTPj/Free是免费的流行的Java FTP库,全球公司依靠edtFTPj /Free 为它们的Java应用程序添加FTP客户端功能. (收费的支持SFTP.FTPS的edtFTPj/PRO ...

  9. 阶段5 3.微服务项目【学成在线】_day05 消息中间件RabbitMQ_7.RabbitMQ研究-工作模式-工作队列模式

    RabbitMQ有以下几种工作模式 : 1.Work queues 2.Publish/Subscribe 3.Routing 4.Topics 5.Header 6.RPC 1.Work queue ...

  10. 阶段5 3.微服务项目【学成在线】_day02 CMS前端开发_25-前后端请求响应流程小结

    看图