python输入验证库。

pyvalitron的Python项目详细描述


吡瓦利酮

pyvalitron是一个轻量级的python输入验证库。

Build StatusPyPI version

安装

要安装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&amp; W&quot;or&quot;ld&lt;br&gt;.', 'sanitize': {'escape': {}}, 'value': 'Hello& W"or"ld<br>.'}print(inputs['test_field']['is_exact'])# Falseprint(inputs['test_field']['svalue'])# Hello&amp; W&quot;or&quot;ld&lt;br&gt;.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编写和维护

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
如何从Java调用AmazonAWSAPI?   Java中的渗流   java在dao端使用逻辑不是一个好的实践吗?   java Swing绘制网格。韦尔德结果   java如何设置PlusOneButton对话框的共享选项的默认文本   java如何在firebase存储中管理多个上载/下载?   java Wicket在多个位置显示相同的文本   java使用j2me通过蓝牙从一个手机向另一个手机发送短信   java为什么不让DialogWait框自动关闭?   java Visual Studio代码JDBC访问Derby数据库   在java中如何根据日期从文件夹中获取文件   java如何从数据库加载多个数据   java匿名类和同步以及“this”   java无法使用Selenium上载文件   java多线程JAXR调用parallelStream还是Futures?   获取要编译的Netbeans Java程序   java检查二叉树是否为有效BST的函数中的“min”和“max”是什么?   java有人能解释为什么这段代码只在构造函数中工作吗?   java如何将多种类型的用户重定向到各自的活动?