Tyrion是一个基于Python实现的支持多个WEB框架的Form表单验证组件,其完美的支持Tornado、Django、Flask、Bottle Web框架。Tyrion主要有两大重要动能:
- 表单验证
- 生成HTML标签
- 保留上次提交内容
对于表单验证,告别书写重复的正则表达式对用户提交的数据进行验证的工作,从此解放双手,跟着我左手右手一个慢动作...
对于生成HTML标签,不在人工书写html标签,让Tyrion帮你自动创建...
对于保留上次提交内容,由于默认表单提交后页面刷新,原来输入的内容会清空,Tyrion可以保留上次提交内容。
github:https://github.com/WuPeiqi/Tyrion
使用文档
1、下载安装
1
|
pip install PyTyrion
|
github: https://github.com/WuPeiqi/Tyrion
2、配置WEB框架种类
由于Tyrion同时支持Tornado、Django、Flask、Bottle多个WEB框架,所有在使用前需要进行指定。
1
2
3
|
import
Tyrion
Tyrion.setup(
'tornado'
)
# setup的参数有:tornado(默认)、django、bottle、flask
|
3、创建Form类
Form类用于提供验证规则、插件属性、错误信息等
1
2
3
4
5
6
7
8
|
from
Tyrion.Forms
import
Form
from
Tyrion.Fields
import
StringField
from
Tyrion.Fields
import
EmailField
class
LoginForm(Form):
username
=
StringField(error
=
{
'required'
:
'用户名不能为空'
})
password
=
StringField(error
=
{
'required'
:
'密码不能为空'
})
email
=
EmailField(error
=
{
'required'
:
'邮箱不能为空'
,
'invalid'
:
'邮箱格式错误'
})
|
4、验证用户请求
前端HTML代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
<form method
=
"POST"
action
=
"/login.html"
>
<div>
<
input
type
=
"text"
name
=
"username"
>
<
/
div>
<div>
<
input
type
=
"text"
name
=
"password"
>
<
/
div>
<div>
<
input
type
=
"text"
name
=
"email"
>
<
/
div>
<
input
type
=
"submit"
value
=
"提交"
>
<
/
form>
|
用户提交数据时,在后台书写如下代码即可实现用户请求数据验证(Tornado示例):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
class
LoginHandler(tornado.web.RequestHandler):
def
get(
self
,
*
args,
*
*
kwargs):
self
.render(
'login.html'
)
def
post(
self
,
*
args,
*
*
kwargs):
form
=
LoginForm(
self
)
###### 检查用户输入是否合法 ######
if
form.is_valid():
###### 如果不合法,则输出错误信息 ######
print
(form.error_dict)
else
:
###### 如果合法,则输出用户输入的内容 ######
print
(form.value_dict)
self
.render(
'login.html'
)
|
示例01:源码下载(含Tornado、Django、Flask、Bottle)
5、验证用户请求 && 生成HTML标签 && 保留上次输入内容 && 错误提示
Tyrion不仅可以验证用户请求,还可以生成自动创建HTML标签并且可以保留用户上次输入的内容。在HTML模板中调用Form类对象的字段即可,如(Tornado示例):
注意: HTML模板中的转义
示例02:源码下载(含有Tornado、Django、Flask、Bottle)
6、Form字段类型
Form的字段用于指定从请求中获取的数据类型以及格式,以此来验证用户输入的内容。
1
2
3
4
5
6
7
8
|
from
Tyrion.Forms
import
Form
from
Tyrion.Fields
import
StringField
from
Tyrion.Fields
import
EmailField
class
LoginForm(Form):
username
=
StringField(error
=
{
'required'
:
'用户名不能为空'
})
password
=
StringField(error
=
{
'required'
:
'密码不能为空'
})
email
=
EmailField(error
=
{
'required'
:
'邮箱不能为空'
,
'invalid'
:
'邮箱格式错误'
})
|
以上代码表示此Form类可以用于验证用户输入的内容,并且 username和password必须不能为空,email必须不能为空并且必须是邮箱格式。
目前支持所有字段:
7、Form字段widget参数:HTML插件
HTML插件用于指定当前字段在生成HTML时表现的种类和属性,通过指定此参数从而实现定制页面上生成的HTML标签
1
2
3
4
5
6
7
8
|
from
Tyrion.Forms
import
Form
from
Tyrion.Fields
import
StringField
from
Tyrion.Fields
import
EmailField
from
Tyrion.Widget
import
InputPassword
class
LoginForm(Form):
password
=
StringField(error
=
{
'required'
:
'密码不能为空'
},widget
=
InputPassword())
|
上述LoginForm的password字段要求用户输入必须是字符串类型,并且指定生成HTML标签时会创建为<input type='password' > 标签
目前支持所有插件:
8、动态初始化默认值
由于Form可以用于生成HTML标签,如果想要在创建标签的同时再为其设置默认值有两种方式:
- 静态,在插件参数中指定
- 动态,调用Form对象的 init_field_value 方法来指定
9、更多示例
示例源码下载:猛击这里
a. 基本使用
b. 多选checkbox
c、多选select
d. 动态select选项
写在最后
开源组件持续更新中,如您在使用过程中遇到任何问题,请留言,我将尽快回复!!!
Tyrion技术交流QQ群:564068039
Tyrion技术交流QQ群:564068039
Tyrion技术交流QQ群:564068039
重要的事情说三遍....
...
......
.........
............
.................
本文转自武沛齐博客园博客,原文链接:http://www.cnblogs.com/wupeiqi/p/5938916.html,如需转载请自行联系原作者