python输入验证库。
pyvalitron的Python项目详细描述
吡瓦利酮
pyvalitron是一个轻量级的python输入验证库。
安装
要安装pyvalitron,请运行以下命令:
pip3 install pyvalitron
用法
安装库后,请阅读以下使用条件:
验证值:
要验证值列表:
frompyvalitron.formimportFormform=Form({'test_field1':{'value':'Hello World','validate':{'length_between':{'param':[1,12],'error':'Input lenght must be between 1 and 12 characters'}}},'test_field2':{'value':'Hello World','validate':{'length_between':{'param':[1,9],'error':'Input lenght must be between 1 and 9 characters'}}}})form.process()errors=form.get_errors()print(errors['test_field2'])# Input lenght must be between 1 and 9 characters
消毒值:
清除值列表:
from__future__importprint_functionfrompyvalitron.formimportFormform=Form({'test_field':{'value':'Hello& W"or"ld<br>.','sanitize':{'escape':{}}}})form.process()inputs=form.get_inputs()print(inputs['test_field'])# {'is_exact': False, 'svalue': 'Hello& W"or"ld<br>.', 'sanitize': {'escape': {}}, 'value': 'Hello& W"or"ld<br>.'}print(inputs['test_field']['is_exact'])# Falseprint(inputs['test_field']['svalue'])# Hello& W"or"ld<br>.print(inputs['test_field']['value'])# Hello& W"or"ld<br>.
from__future__importprint_functionfrompyvalitron.formimportFormform=Form({'test_field':{'value':'Hello World.','sanitize':{'escape':{}}}})form.process()inputs=form.get_inputs()print(inputs['test_field'])# {'is_exact': True, 'svalue': 'Hello World.', 'sanitize': {'escape': {}}, 'value': 'Hello World.'}print(inputs['test_field']['is_exact'])# Trueprint(inputs['test_field']['svalue'])# Hello World.print(inputs['test_field']['value'])# Hello World.
验证和清除值:
要验证和清除值列表:
from__future__importprint_functionfrompyvalitron.formimportFormform=Form({'test_field':{'value':'hello@clivern.com','sanitize':{'escape':{}},'validate':{'email':{'error':'Please provide a valid email.'}}}})form.process()inputs=form.get_inputs()errors=form.get_errors()print(errors)# {'test_field': []}print(errors['test_field'])# []print(inputs['test_field'])# {'status': True, 'is_exact': True, 'value': 'hello@clivern.com', 'sanitize': {'escape': {}}, 'svalue': 'hello@clivern.com', 'validate': {'email': {'error': 'Please provide a valid email.'}}}print(inputs['test_field']['status'])# Trueprint(inputs['test_field']['is_exact'])# Trueprint(inputs['test_field']['value'])# hello@clivern.comprint(inputs['test_field']['svalue'])# hello@clivern.com
from__future__importprint_functionfrompyvalitron.formimportFormform=Form({'test_field':{'value':'hello@cliv@ern.com','sanitize':{'escape':{}},'validate':{'email':{'error':'Please provide a valid email.'}}}})form.process()inputs=form.get_inputs()errors=form.get_errors()print(errors)# {'test_field': ['Please provide a valid email.']}print(errors['test_field'])# ['Please provide a valid email.']print(inputs['test_field'])# {'status': False, 'is_exact': True, 'value': 'hello@cliv@ern.com', 'sanitize': {'escape': {}}, 'svalue': 'hello@cliv@ern.com', 'validate': {'email': {'error': 'Please provide a valid email.'}}}print(inputs['test_field']['status'])# Falseprint(inputs['test_field']['is_exact'])# Trueprint(inputs['test_field']['value'])# hello@cliv@ern.comprint(inputs['test_field']['svalue'])# hello@cliv@ern.com
与框架一起使用:
烧瓶框架
fromflaskimportFlaskfromflaskimportrequestfrompyvalitron.formimportFormapp=Flask(__name__)@app.route("/")defhello():form=Form({'test_field1':{'value':request.args.get('test_field1'),'validate':{'length_between':{'param':[1,12],'error':'Input lenght must be between 1 and 12 characters'}}},'test_field2':{'value':request.args.get('test_field2'),'validate':{'length_between':{'param':[1,9],'error':'Input lenght must be between 1 and 9 characters'}}}},'values')form.process()errors=form.get_errors()if'Input lenght must be between 1 and 9 characters'inerrors['test_field2']:return'error'else:return'success'if__name__=="__main__":app.run(debug=True)
验证器列表:
以下是所有可用验证程序的列表:
empty
:验证输入或值是否为空not_empty
:验证输入或值是否不为空length_between
:验证输入或值长度是否在提供的长度之间。它需要两个参数[from_length, to_length]
,比如[1, 13]
。min_length
:验证输入或最小长度值是否与提供的值相同它需要一个参数[min_length]
,比如[1]
max_length
:验证输入或最大长度值是否与提供的相同。它需要一个参数[max_length]
,比如[12]
。exact_length
:验证输入或值lenght是否等于提供的值它需要一个参数[exact_length]
,比如[9]
。greater_than
:验证输入或值是否大于提供的值。它需要一个参数[number]
,比如[5]
。greater_than_equal
:验证输入或值是否大于或等于提供的值。它需要一个参数[number]
,比如[4]
less_than
:验证输入或值是否小于提供的值它需要一个参数[number]
,比如[5]
。less_than_equal
:验证输入或值是否小于或等于提供的值它需要一个参数[number]
,比如[5]
equal
:验证输入或值是否等于提供的值。它需要一个参数[number]
,比如[5]
。same_as
:验证输入或值是否与提供的值相同它需要一个参数[text]
,比如['Hello World']
any_of
:验证输入或值是否是提供的列表中的任何一个它需要一个参数[[options]]
,比如[1,5,'text']
all_of
:验证输入或值是否是提供的列表的全部它需要一个参数[[options]]
,比如[1,5,'text']
none_of
:验证输入或值是否不在提供的列表中它需要一个参数[[options]]
,比如[1,5,'text']
alpha
:验证输入或值是否按字母顺序排列alpha_numeric
:验证输入或值是否为字母数字digit
:验证输入或值是否为数字。email
:验证输入或值是否为电子邮件。emails
:验证输入或值是否是电子邮件列表。它需要一个参数[separator]
,比如[',']
。url
:验证输入或值是否为URL它需要一个参数(协议列表)[[protocols]]
,比如[['http', 'https']]
。ip
:验证输入或值是否为IP它需要一个参数(格式列表)[[formats]]
,比如['ipv4']
ipv4
:验证输入或值是否为IPv4。uuid
:验证输入或值是否为通用唯一标识符(uuid)matches
:验证输入或值是否与提供的正则表达式匹配。它需要一个参数[regex]
,比如[r'^[_a-z0-9-]+$']
消毒剂列表
以下是所有可用消毒剂的列表:
strip
:删除输入值它接受一个参数[[chars]]
,比如[[',', '.', '\s']]
lstrip
:左键删除输入值它接受一个参数[[chars]]
,比如[[',', '.', '\s']]
。rstrip
:右键删除输入值它接受一个参数[[chars]]
,比如[[',', '.', '\s']]
escape
:转义输入值以防止恶意脚本它接受一个参数(要转义的字符列表)目前它支持这些字符['&', '"', '\'', '>', '<']
。
自定义验证器
定义新验证器:
frompyvalitron.validatorimportValidatorfrompyvalitron.formimportFormclassMyValidator(Validator):defusername(self):ifnotisinstance(self._input,(str)):returnFalsecurrent_input=self._input.strip()iflen(current_input)>5andcurrent_input.isalpha():returnTruereturnFalsedefotherrule(self):returnTrue#...and so oneform=Form()form.add_validator(MyValidator())form.add_inputs({'user_name':{'value':'','validate':{'username':{'error':'Invalid Username'}}}})form.process()errors=form.get_errors()#{'user_name': ['Invalid Username']}
定制消毒剂
要定义新的消毒剂:
from__future__importprint_functionfrompyvalitron.sanitizerimportSanitizerfrompyvalitron.formimportFormclassMySanitizer(Sanitizer):defclear_spaces(self):ifnotisinstance(self._input,(str)):self._sinput=str(self._input)else:self._sinput=self._inputself._sinput=self._sinput.replace(" ","")returnself._sinputdeflower_case(self):ifnotisinstance(self._input,(str)):self._sinput=str(self._input)else:self._sinput=self._inputself._sinput=self._sinput.lower()returnself._sinputform=Form({'test_field':{'value':'Hello World','sanitize':{'clear_spaces':{},'lower_case':{}}}},'values')form.add_sanitizer(MySanitizer())form.process()inputs=form.get_inputs()print(inputs['test_field']['svalue'])#helloworld
杂项
变更日志
版本1.1.3:
Fix issue with validation extensions.
版本1.1.2:
Fix import issues.
版本1.1.1:
New Validation Rules.
Add python lint check.
1.0.0版:
Initial Release.
致谢
2019年,西尔弗贝克。在MIT License下发布。
PyValitron由@silverbackhq编写和维护