Form表单验证组件
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示例):
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类
class LoginHandler(tornado.web.RequestHandler):
def get(self, *args, **kwargs):
form = LoginForm(self)
self.render('login.html', form=form) def post(self, *args, **kwargs):
form = LoginForm(self) print(form.is_valid())
print(form.error_dict)
print(form.value_dict) self.render('login.html', form=form)
处理请求(Tornado)
<form method="post" action="/login.html">
<div>
<!-- Form创建的标签 -->
{% raw form.username %} <!-- 错误信息 -->
<span>{{form.error_dict.get('username',"")}}</span>
</div>
<div>
{% raw form.password %}
<span>{{form.error_dict.get('password',"")}}</span>
</div>
<div>
{% raw form.email %}
<span>{{form.error_dict.get('email',"")}}</span>
</div>
<input type="submit" value="提交"/>
</form>
HTML模板login.html
注意: 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必须不能为空并且必须是邮箱格式。
目前支持所有字段:
StringField
"""
要求必须是字符串,即:正则^.*$ 参数:
required 布尔值,是否允许为空
max_length 整数,限制用户输入内容最大长度
min_length 整数,限制用户输入内容最小长度
error 字典,自定义错误提示,如:{
'required': '值为空时的错误提示',
'invalid': '格式错误时的错误提示',
'max_length': '最大长度为10',
'min_length': '最小长度为1',
}
widget 定制生成的HTML插件(默认InputText)
""" EmailField
"""
要求必须是邮箱格式的字符串 参数:
required 布尔值,是否允许为空
max_length 整数,限制用户输入内容最大长度
min_length 整数,限制用户输入内容最小长度
error 字典,自定义错误提示,如:{
'required': '值为空时的错误提示',
'invalid': '格式错误时的错误提示',
'max_length': '最大长度为10',
'min_length': '最小长度为1',
}
widget 定制生成的HTML插件(默认InputText)
""" IPField
"""
要求必须是IP格式 参数:
required 布尔值,是否允许为空
max_length 整数,限制用户输入内容最大长度
min_length 整数,限制用户输入内容最小长度
error 字典,自定义错误提示,如:{
'required': '值为空时的错误提示',
'invalid': '格式错误时的错误提示',
'max_length': '最大长度为10',
'min_length': '最小长度为1',
}
widget 定制生成的HTML插件(默认InputText) """ IntegerField
"""
要求必须整数格式 参数:
required 布尔值,是否允许为空
max_value 整数,限制用户输入数字最大值
min_value 整数,限制用户输入数字最小值
error 字典,自定义错误提示,如:{
'required': '值为空时的错误提示',
'invalid': '格式错误时的错误提示',
'max_value': '最大值为10',
'max_value': '最小值度为1',
}
widget 定制生成的HTML插件(默认InputText) """ FloatField
"""
要求必须小数格式 参数:
required 布尔值,是否允许为空
max_value 整数,限制用户输入数字最大值
min_value 整数,限制用户输入数字最小值
error 字典,自定义错误提示,如:{
'required': '值为空时的错误提示',
'invalid': '格式错误时的错误提示',
'max_value': '最大值为10',
'max_value': '最小值度为1',
}
widget 定制生成的HTML插件(默认InputText)
""" StringListField
"""
用于获取请求中的多个值,且保证每一个元素是字符串,即:正则^.*$
如:checkbox或selct多选时,会提交多个值,用此字段可以将用户提交的值保存至列表 参数:
required 布尔值,是否允许为空
ele_max_length 整数,限制用户输入的每个元素内容最大长度
ele_min_length 整数,限制用户输入的每个元素内容最小长度
error 字典,自定义错误提示,如:{
'required': '值为空时的错误提示',
'element': '列表中的元素必须是字符串',
'ele_max_length': '最大长度为10',
'ele_min_length': '最小长度为1',
}
widget 定制生成的HTML插件(默认InputMultiCheckBox,即:checkbox)
""" IntegerListField
"""
用于获取请求中的多个值,且保证每一个元素是整数
如:checkbox或selct多选时,会提交多个值,用此字段可以将用户提交的值保存至列表 参数:
required 布尔值,是否允许为空
ele_max_value 整数,限制用户输入的每个元素内容最大长度
ele_min_value 整数,限制用户输入的每个元素内容最小长度
error 字典,自定义错误提示,如:{
'required': '值为空时的错误提示',
'element': '列表中的元素必须是数字',
'ele_max_value': '最大值为x',
'ele_min_value': '最小值为x',
}
widget 定制生成的HTML插件(默认InputMultiCheckBox,即:checkbox)
"""
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' > 标签
目前支持所有插件:
InputText
"""
设置Form对应字段在HTML中生成input type='text' 标签 参数:
attr 字典,指定生成标签的属性,如: attr = {'class': 'c1', 'placeholder': 'username'}
"""
InputEmail
"""
设置Form对应字段在HTML中生成input type='email' 标签 参数:
attr 字典,指定生成标签的属性,如: attr = {'class': 'c1', 'placeholder': 'username'}
"""
InputPassword
"""
设置Form对应字段在HTML中生成input type='password' 标签 参数:
attr 字典,指定生成标签的属性,如: attr = {'class': 'c1', 'placeholder': 'username'}
"""
TextArea
"""
设置Form对应字段在HTML中生成 textarea 标签 参数:
attr 字典,指定生成标签的属性,如: attr = {'class': 'c1'}
value 字符串,用于设置textarea标签中默认显示的内容
""" InputRadio
"""
设置Form对应字段在HTML中生成一系列 input type='radio' 标签(选择时互斥) 参数:
attr 字典,生成的HTML属性,如:{'class': 'c1'}
text_value_list 列表,生成的多个radio标签的内容和值,如:[
{'value':1, 'text': '男'},
{'value':2, 'text': '女'},
]
checked_value 整数或字符串,默认被选中的标签的value的值 示例:
from Tyrion.Forms import Form
from Tyrion.Fields import IntegerField from Tyrion.Widget import InputRadio class LoginForm(Form):
favor = IntegerField(error={'required': '爱好不能为空'},
widget=InputRadio(attr={'class': 'c1'},
text_value_list=[
{'value': 1, 'text': '男'},
{'value': 2, 'text': '女'}, ],
checked_value=2
)
)
上述favor字段生成的HTML标签为:
<div>
<span>
<input class='c1' type="radio" name="gender" value="1">
</span>
<span>男</span>
</div>
<div>
<span>
<input class='c1' type="radio" name="gender" value="2" checked='checked'>
</span>
<span>女</span>
</div>
""" InputSingleCheckBox
"""
设置Form对应字段在HTML中生成 input type='checkbox' 标签
参数:
attr 字典,指定生成标签的属性,如: attr = {'class': 'c1'}
""" InputMultiCheckBox
"""
设置Form对应字段在HTML中生成一系列 input type='checkbox' 标签 参数:
attr 字典,指定生成标签的属性,如: attr = {'class': 'c1'}
text_value_list 列表,生成的多个checkbox标签的内容和值,如:[
{'value':1, 'text': '篮球'},
{'value':2, 'text': '足球'},
{'value':3, 'text': '乒乓球'},
{'value':4, 'text': '羽毛球'},
]
checked_value_list 列表,默认选中的标签对应的value, 如:[1,3]
"""
SingleSelect
"""
设置Form对应字段在HTML中生成 单选select 标签 参数:
attr 字典,指定生成标签的属性,如: attr = {'class': 'c1'}
text_value_list 列表,用于指定select标签中的option,如:[
{'value':1, 'text': '北京'},
{'value':2, 'text': '上海'},
{'value':3, 'text': '广州'},
{'value':4, 'text': '重庆'},
]
selected_value 数字或字符串,默认被选中选项对应的值,如: 3
""" MultiSelect
"""
设置Form对应字段在HTML中生成 多选select 标签 参数:
attr 字典,指定生成标签的属性,如: attr = {'class': 'c1'}
text_value_list 列表,用于指定select标签中的option,如:[
{'value':1, 'text': '篮球'},
{'value':2, 'text': '足球'},
{'value':3, 'text': '乒乓球'},
{'value':4, 'text': '羽毛球'},
]
selected_value_list 列表,默认被选中选项对应的值,如:[2,3,4]
"""
8、动态初始化默认值
由于Form可以用于生成HTML标签,如果想要在创建标签的同时再为其设置默认值有两种方式:
- 静态,在插件参数中指定
- 动态,调用Form对象的 init_field_value 方法来指定
class InitValueForm(Form):
username = StringField(error={'required': '用户名不能为空'})
age = IntegerField(max_value=500,
min_value=0,
error={'required': '年龄不能为空',
'invalid': '年龄必须为数字',
'min_value': '年龄不能小于0',
'max_value': '年龄不能大于500'}) city = IntegerField(error={'required': '年龄不能为空', 'invalid': '年龄必须为数字'},
widget=SingleSelect(text_value_list=[{'value': 1, 'text': '上海'},
{'value': 2, 'text': '北京'},
{'value': 3, 'text': '广州'}])
) gender = IntegerField(error={'required': '请选择性别',
'invalid': '性别必须为数字'},
widget=InputRadio(text_value_list=[{'value': 1, 'text': '男', },
{'value': 2, 'text': '女', }],
checked_value=2)) protocol = IntegerField(error={'required': '请选择协议', 'invalid': '协议格式错误'},
widget=InputSingleCheckBox(attr={'value': 1})) favor_int_val = IntegerListField(error={'required': '请选择爱好', 'invalid': '选择爱好格式错误'},
widget=InputMultiCheckBox(text_value_list=[{'value': 1, 'text': '篮球', },
{'value': 2, 'text': '足球', },
{'value': 3, 'text': '乒乓球', },
{'value': 4, 'text': '羽毛球'}, ])) favor_str_val = StringListField(error={'required': '请选择爱好', 'invalid': '选择爱好格式错误'},
widget=InputMultiCheckBox(text_value_list=[{'value': '', 'text': '篮球', },
{'value': '', 'text': '足球', },
{'value': '', 'text': '乒乓球', },
{'value': '', 'text': '羽毛球'}, ])) select_str_val = StringListField(error={'required': '请选择爱好', 'invalid': '选择爱好格式错误'},
widget=MultiSelect(text_value_list=[{'value': '', 'text': '篮球', },
{'value': '', 'text': '足球', },
{'value': '', 'text': '乒乓球', },
{'value': '', 'text': '羽毛球'}, ])) select_int_val = IntegerListField(error={'required': '请选择爱好', 'invalid': '选择爱好格式错误'},
widget=MultiSelect(text_value_list=[{'value': 1, 'text': '篮球', },
{'value': 2, 'text': '足球', },
{'value': 3, 'text': '乒乓球', },
{'value': 4, 'text': '羽毛球'}, ]))
动态初始值 - Form类
class InitValueHandler(tornado.web.RequestHandler): def get(self, *args, **kwargs):
form = InitValueForm(self) init_dict = {
'username': 'seven',
'age': 18,
'city': 2,
'gender': 2,
'protocol': 1,
'favor_int_val': [1, 3],
'favor_str_val': ['', ''],
'select_int_val': [1, 3],
'select_str_val': ['', ''] } # 初始化操作,设置Form类中默认值以及默认选项
form.init_field_value(init_dict) self.render('init_value.html', form=form)
动态初始值 - 处理请求的Handler(Tornado)
9、更多示例
示例源码下载:猛击这里
a. 基本使用
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
class RegisterForm(Form): username = StringField(max_length = 32 , min_length = 6 , error = { 'required' : '用户名不能为空' , 'min_length' : '用户名不能少于6位' , 'max_length' : '用户名不能超过32位' }) password = StringField(max_length = 32 , min_length = 6 , error = { 'required' : '密码不能为空' }, widget = InputPassword()) gender = IntegerField(error = { 'required' : '请选择性别' , 'invalid' : '性别必须为数字' }, widget = InputRadio(text_value_list = [{ 'value' : 1 , 'text' : '男' , }, { 'value' : 2 , 'text' : '女' , }], checked_value = 2 )) age = IntegerField(max_value = 500 , min_value = 0 , error = { 'required' : '年龄不能为空' , 'invalid' : '年龄必须为数字' , 'min_value' : '年龄不能小于0' , 'max_value' : '年龄不能大于500' }) email = EmailField(error = { 'required' : '邮箱不能为空' , 'invalid' : '邮箱格式错误' }) city = IntegerField(error = { 'required' : '城市选项不能为空' , 'invalid' : '城市选项必须为数字' }, widget = SingleSelect(text_value_list = [{ 'value' : 1 , 'text' : '上海' }, { 'value' : 2 , 'text' : '北京' }, { 'value' : 3 , 'text' : '广州' }]) ) protocol = IntegerField(error = { 'required' : '请选择协议' , 'invalid' : '协议格式错误' }, widget = InputSingleCheckBox(attr = { 'value' : 1 })) memo = StringField(required = False , max_length = 150 , error = { 'invalid' : '备注格式错误' , 'max_length' : '备注最大长度为150字' }, widget = TextArea()) |
b. 多选checkbox
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
class MultiCheckBoxForm(Form): favor_str_val = StringListField(error = { 'required' : '请选择爱好' , 'invalid' : '选择爱好格式错误' }, widget = InputMultiCheckBox(text_value_list = [{ 'value' : '1' , 'text' : '篮球' , }, { 'value' : '2' , 'text' : '足球' , }, { 'value' : '3' , 'text' : '乒乓球' , }, { 'value' : '4' , 'text' : '羽毛球' }, ])) favor_str_val_default = StringListField(error = { 'required' : '请选择爱好' , 'invalid' : '选择爱好格式错误' }, widget = InputMultiCheckBox(text_value_list = [{ 'value' : '1' , 'text' : '篮球' , }, { 'value' : '2' , 'text' : '足球' , }, { 'value' : '3' , 'text' : '乒乓球' , }, { 'value' : '4' , 'text' : '羽毛球' }, ], checked_value_list = [ '1' , '4' ])) favor_int_val = IntegerListField(error = { 'required' : '请选择爱好' , 'invalid' : '选择爱好格式错误' }, widget = InputMultiCheckBox(text_value_list = [{ 'value' : 1 , 'text' : '篮球' , }, { 'value' : 2 , 'text' : '足球' , }, { 'value' : 3 , 'text' : '乒乓球' , }, { 'value' : 4 , 'text' : '羽毛球' }, ])) favor_int_val_default = IntegerListField(error = { 'required' : '请选择爱好' , 'invalid' : '选择爱好格式错误' }, widget = InputMultiCheckBox(text_value_list = [{ 'value' : 1 , 'text' : '篮球' , }, { 'value' : 2 , 'text' : '足球' , }, { 'value' : 3 , 'text' : '乒乓球' , }, { 'value' : 4 , 'text' : '羽毛球' }, ], checked_value_list = [ 2 , ])) |
c、多选select
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
class MultiSelectForm(Form): select_str_val = StringListField(error = { 'required' : '请选择爱好' , 'invalid' : '选择爱好格式错误' }, widget = MultiSelect(text_value_list = [{ 'value' : '1' , 'text' : '篮球' , }, { 'value' : '2' , 'text' : '足球' , }, { 'value' : '3' , 'text' : '乒乓球' , }, { 'value' : '4' , 'text' : '羽毛球' }, ])) select_str_val_default = StringListField(error = { 'required' : '请选择爱好' , 'invalid' : '选择爱好格式错误' }, widget = MultiSelect(text_value_list = [{ 'value' : '1' , 'text' : '篮球' , }, { 'value' : '2' , 'text' : '足球' , }, { 'value' : '3' , 'text' : '乒乓球' , }, { 'value' : '4' , 'text' : '羽毛球' }, ], selected_value_list = [ '1' , '3' ])) select_int_val = IntegerListField(error = { 'required' : '请选择爱好' , 'invalid' : '选择爱好格式错误' }, widget = MultiSelect(text_value_list = [{ 'value' : 1 , 'text' : '篮球' , }, { 'value' : 2 , 'text' : '足球' , }, { 'value' : 3 , 'text' : '乒乓球' , }, { 'value' : 4 , 'text' : '羽毛球' }, ])) select_int_val_default = IntegerListField(error = { 'required' : '请选择爱好' , 'invalid' : '选择爱好格式错误' }, widget = MultiSelect(text_value_list = [{ 'value' : 1 , 'text' : '篮球' , }, { 'value' : 2 , 'text' : '足球' , }, { 'value' : 3 , 'text' : '乒乓球' , }, { 'value' : 4 , 'text' : '羽毛球' }, ], selected_value_list = [ 2 ])) |
d. 动态select选项
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
class DynamicSelectForm(Form): city = IntegerField(error = { 'required' : '年龄不能为空' , 'invalid' : '年龄必须为数字' }, widget = SingleSelect(text_value_list = [{ 'value' : 1 , 'text' : '上海' }, { 'value' : 2 , 'text' : '北京' }, { 'value' : 3 , 'text' : '广州' }]) ) multi_favor = IntegerListField(error = { 'required' : '请选择爱好' , 'invalid' : '选择爱好格式错误' }, widget = MultiSelect(text_value_list = [{ 'value' : 1 , 'text' : '篮球' , }, { 'value' : 2 , 'text' : '足球' , }, { 'value' : 3 , 'text' : '乒乓球' , }, { 'value' : 4 , 'text' : '羽毛球' }, ])) def __init__( self , * args, * * kwargs): super (DynamicSelectForm, self ).__init__( * args, * * kwargs) # 获取数据库中的最新数据并显示在页面上(每次创建对象都执行一次数据库操作来获取最新数据) self .city.widget.text_value_list = [{ 'value' : 1 , 'text' : '上海' }, { 'value' : 2 , 'text' : '北京' }, { 'value' : 3 , 'text' : '南京' }, { 'value' : 4 , 'text' : '广州' }] self .multi_favor.widget.text_value_list = [{ 'value' : 1 , 'text' : '篮球' }, { 'value' : 2 , 'text' : '足球' }, { 'value' : 3 , 'text' : '乒乓球' }, { 'value' : 4 , 'text' : '羽毛球' }, { 'value' : 5 , 'text' : '玻璃球' }] |
写在最后
开源组件持续更新中,如您在使用过程中遇到任何问题,请留言,我将尽快回复!!!
Tyrion技术交流QQ群:564068039
Tyrion技术交流QQ群:564068039
Tyrion技术交流QQ群:564068039
重要的事情说三遍....
...
......
.........
............
Form表单验证组件的更多相关文章
- 抽屉之Tornado实战(7)--form表单验证
在这里,我们把form表单验证的代码进行工具化了,以后稍微修改一下参数就可以拿来用了 先贴上代码 forms.py from backend.form import fields class Base ...
- vue elementui form表单验证
最近我们公司将前端框架由easyui 改为 vue+elementui .自学vue两周 就开始了爬坑之路.业余时间给大家分享一下心得,技术新手加上第一次分享(小激动),有什么不足的地方欢迎大家指正, ...
- jQuery表单验证组件BootstrapValidator
github:https://github.com/nghuuphuoc/bootstrapvalidator 参考博客:JS组件系列——Form表单验证神器: BootstrapValidator ...
- form表单验证-Javascript
Form表单验证: js基础考试内容,form表单验证,正则表达式,blur事件,自动获取数组,以及css布局样式,动态清除等.完整代码如下: <!DOCTYPE html PUBLIC &qu ...
- django之form表单验证
django中的Form一般有两种功能: 输入html 验证用户输入 #!/usr/bin/env python # -*- coding:utf- -*- import re from django ...
- python_way day19 HTML-day5 (form表单验证,CSRF,cookie,session,缓存)
python-way day19 1. dJango的form表单验证 2.CSRF 跨站请求伪造 3.cookie,session 4.缓存 一,django表单验证功能 1.django验证基础: ...
- form表单验证2
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Day19 Django之Form表单验证、CSRF、Cookie、Session和Model操作
一.Form表单验证 用于做用户提交数据的验证1.自定义规则 a.自定义规则(类,字段名==html中的name值)b.数据提交-规则进行匹配代码如下: """day19 ...
- [php基础]PHP Form表单验证:PHP form validator使用说明
在PHP网站开发建设中,用户注册.留言是必不可少的功能,用户提交的信息数据都是通过Form表单提交,为了保证数据的完整性.安全性,PHP Form表单验证是过滤数据的首要环节,PHP对表单提交数据的验 ...
随机推荐
- 了解一下Elasticsearch的基本概念
一.前文介绍 Elasticsearch(简称ES)是一个基于Apache Lucene(TM)的开源搜索引擎,无论在开源还是专有领域,Lucene 可以被认为是迄今为止最先进.性能最好的.功能最全的 ...
- Redis存储Set
与List不同Set不能存储相同元素,且数据没有顺序. 存储结构: 1.存储与查看数据: 2.删除指定的一个元素: 3.判断是否存在某一个元素(存在返回1,不存在返回0): 4.判断两个set中的特有 ...
- testinfra 基础设施测试工具
testinfra 是基于python 开发的基础设施测试工具,我们可以用来方便的测试基础设施 是否符合我们的要求(系统,软件...) 一个参考demo def test_passwd_file( ...
- 3、kafka工作流程
一.kafka各成员 kafka: 分布式消息系统,将消息直接存入磁盘,默认保存一周. broker: 组成kafka集群的节点,之间没有主从关系,依赖zookeeper来协调,broker负责满息的 ...
- 时间time模块
time模块: import time --时间模块 --time : 三种不同的时间格式,可以相互转换 时间戳(timestamp): --从1970年1月1日00:00:00开始按秒计算的偏移量 ...
- 如何打开 win 10 内置应用
gpedit.msc windows设置 安全设置 本地策略 安全选项 >> 用户账户控制:用于内置管理员账户的管理员批准模式:已启用
- 【LA 3942】 Remember the word
题意 给定一个字符串和若干个单词,询问能把字符串分解成这些单词的方案数.比如abcd ,有单词a,b,ab,cd:就可以分解成a+b+cd或者ab+cd. 分析 trie树—>DP 代码 (感谢 ...
- python3 Paramiko模块学习
简介 ssh是一个协议,OpenSSH是其中一个开源实现,paramiko是Python的一个库,实现了SSHv2协议(底层使用cryptography). 有了Paramiko以后,我们就可以在Py ...
- 软件工程第二次作业——Java学习路线
我的第二次软工作业 过去我对自己所学和想学都很迷茫,以至于学得总是一知半解,但现在我想主攻Java方向,并坚定不移地走下去(之后拓展其他方面就是以后的事情了).之所以想主攻Java方向是因为Java本 ...
- 集成了SSM框架的系统怎么做测试?
1.首先在测试文件夹下新建一个测试基类BaseTest BaseTest中的代码如下: package wbl_ssm_blog.mapper; import org.junit.Test; impo ...