发布于2019-08-05 18:28 阅读(1187) 评论(0) 点赞(5) 收藏(3)
Flask-WTF 对 WTForms 进行了封装使它能够在 Flask 框架中可以被调用,其中 Flask-WTF 的功能都是继承自 WTForms ,因此安装 Flask-WTF 时会自动安装 WTForms 模块。
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'
作者:把镜子打碎
链接:https://www.pythonheidong.com/blog/article/6256/4c19ae44b696d88661b7/
来源:python黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 python黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-1
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!