Flask-WTF的使用


一、安装Flask-WTF

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

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

二、创建表单类

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

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

三、创建视图方法

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

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

四、前台页面展示

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

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

展示效果:

五、补充

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

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. Python学习日记(五)——初识函数(set、深浅拷贝、三目运算、函数、全局变量和局部变量)

    基本数据类型补充 set set集合,是一个无序且不重复的元素集合 #创建 s = {11,22,33,44}#类似字典 s = set() #转换 l = (11,22,33,44) s1 = se ...

  2. Maven依赖传递

    依赖传递原则: 1.路径最短原则 2.路径相同是先申明者优先(dependency申明顺序先的优先)

  3. ROS Topic 常用指令

    rostopic list rosnode list一樣,就是列出目前運行中的topic有哪些. rostopic echo <topic_name> 接下來這個指令比較重要啦,就是去監聽 ...

  4. Java并发指南3:并发三大问题与volatile关键字,CAS操作

    本文转载自互联网,侵删   序言 先来看如下这个简单的Java类,该类中并没有使用任何的同步. 01 final class SetCheck { 02 private int  a = 0; 03 ...

  5. Protocol Buffers学习笔记

    Protocol Buffers学习笔记 1. 简介 Protocol Buffers是google发明的一种数据交换格式,独立于语言,独立于平台.与其他的数据交换格式有所不同,Protocol Bu ...

  6. StringUtils的isNotEmpty,isNotBlank方法的区别

    这两个用着用着老是混淆或者忘记,今天写一下做个笔记,对比下两个判断方法的区别 isNotEmpty: 判断某字符串是否非空,等于!isEmpty(String str),这里不能排除空格字符 Stri ...

  7. 调用subprocess 使用logging打印日志

    #!/usr/bin/env python # -*- coding:utf-8 -*- # Author:Henry 17607168727@163.com import sys import lo ...

  8. linux下添加动态链接库路径、动态库加载等方法

    linux下添加动态链接库路径的方法 2017年01月20日 10:08:17 阅读数:5596   Linux共享库路径配置 Linux下找不到共享库文件的典型现象为明明已经安装某个软包(如libn ...

  9. 4 个独特的 Linux 终端模拟器(转)

    4 个独特的 Linux 终端模拟器 译自:https://www.linux.com/blog/learn/2018/12/4-unique-terminals-linux作者: Jack Wall ...

  10. BTE的一些知识

    1.今天遇到一个问题,看项目上做了BTE增强00001120 事件的BTE 但是自定义函数  更改了参数  t_bseg  t_bkpf MODIFY t_bkpf FROM ls_bkpf TRAN ...