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'

最新文章

  1. python 文件操作(转)
  2. 利用SVN进行任意文件对比
  3. ExtJs特点、优缺点及注意事项
  4. 排序算法二(时间复杂度为O(N*logN))
  5. Python socket编程之六:多窗口的应用
  6. UIButton 去除按下效果(阴影)
  7. Python补充05 字符串格式化 (%操作符)
  8. [DP] LGTB 玩THD (复杂状态DP)
  9. Have trouble in your life
  10. 深入理解ob_flush和flush的区别(转)
  11. 在Xshell中上传下载文件到本地(linux中从多次ssh登录的dbserver里面的文件夹)
  12. web前端教程:CSS 布局十八般武艺都在这里了
  13. 关于js的语句类型运算符等
  14. cookie的增删改查函数
  15. JavaScript 集合对象
  16. 2019年2月备战春招最新大数据+Java岗位+人工智能岗位资料免费送【限时领取】
  17. 抓包神器 tcpdump 使用介绍
  18. Jumpserver跳板机的搭建和部署
  19. KiCad 国内下载镜像收集
  20. 使用python实现人脸检测&lt;转载&gt;

热门文章

  1. Ryu控制器安装部署和入门
  2. 快速上手系列-C语言之指针篇(一)
  3. linux C file format analysis
  4. Mapping Pocos
  5. Linux嵌入式学习过程(转载)
  6. Mysql 清空数据后,释放硬盘文件
  7. &lt;JavaScript&gt; 稳妥构造函数模式与工厂模式的区别
  8. ZSDR017
  9. JAVA 基础编程练习题45 【程序 45 被 9 整除】
  10. JAVA 基础编程练习题32 【程序 32 左移右移】