Metadata-Version: 2.1
Name: hehey-hvalidation
Version: 1.2.3
Summary: hehey-hvalidation 是一个python 全面的验证器工具类.
Home-page: https://gitee.com/chinahehe/hehey-hvalidation
Author: 13564768842
Author-email: chinabluexfw@163.com
License: UNKNOWN
Description: # hehey-hvalidation
        
        #### 介绍
        hehey-hvalidation 是一个python 全面的验证器工具类。
        其主要特点有:
          - 支持常用验证器
          - 验证器易扩展
          - 支持验证字典以及对象属性
          - 示例全面
          
        #### 依赖以及版本要求
        - python >= 3.5
        
        #### 安装
        - 直接下载:
        ```
        
        ```
        - 命令安装：
        ```
        pip install hehey-hvalidation
        ```
        #### 基础文件以目录
        
        
        #### 参数配置
        ```python
        
        # 验证器规则参数
        ruleConf = {
            "goon":False,# 当验证错误是是否继续验证
            "message":"你输入的格式错误!",# 错误消息
            "on":"create",# 使用场景
            "when":'valint(方法或函数)',# 满足条件
        };
        
        # 验证器参数
        validatorConf = {
            "message":"你输入的格式错误!",# 错误消息
            "skipOnEmpty":"create(方法或函数)",# 验证值为空时是否调用验证
            "emptyFunc":"emptyFunc(方法或函数)",# 验证是否空方法,可以重写
            "non":False,# 结果是否非
            "when":'valint()',# 满足条件
        };
        
        
        ```
        #### 基本示例
        - 快速使用
        ```python
        from hvalidation.validation import Validation
        validation = Validation()
        
        validateData = {
            'username': 'hehe',
            'userid': 10,
            'title': 'hehe 每天小酌一杯',
            'age': 10,
            'birthday':'1988-06-14',
            'tel':'13511221111',
            'password':'5241411',
            'confirmpassword':'2541414',
            'sceneType':"login",
        };
        
        validateRules = [
            ['username',[ ['required'],['alphaNum'] ],{'message':'请输入的字符必须包含字母字符'}],
            ['userid',[ ['!empty'],['int'] ],{'message':'user_id 必须为数字'}],
            ['title',[ ['required'],['len',{"min":2,"max":200}] ],{'message':'请输入一个长度介于 {min} 和 {max} 之间的字符串'}],
            ['age',[ ['required'],['range',{"min":2,"max":200}] ],{'message':'请输入一个合法的{min}-{max}数值'}],
            ['birthday',[ ['required'],['date',{"format":'Y-m-d'}] ],{'message':'你输入的日期格式错误,正确日期格式为:{format}'}],
            ['tel',[ ['required'],['date',{"format":'Y-m-d'}] ],{'message':'你的输入手机格式有误,必须11位'}],
            ['password',[ ['required'],['alphaDash',{"len":[6,15]}] ],{'message':'请输入的字符包含字母、数字、破折号（ - ）以及下划线（ _ ）,字符长度在6-15 位'}],
            ['confirmpassword',[ ['required'],['alphaDash',{"len":[6,15]}], ['eqstrfield',{'field':"password"}] ],{'message':'你的输入确认密码与密码不一致!'}],
            ['sceneType',[ ['required'],['enum',{"numbers":['login','changeTel','reg']}], ],{'message':'你输入的场景类型错误,必须为{numbers}!'}],
            
        ];
        
        if not validation.validate(validateData,validateRules):
            print("验证错误:{0}".format(validation.getFirstError()))
        else:
            print('验证通过!')
        
        ```
        
        - 接入hehey 组件
        ```python
        # settings.py 配置文件
        components = {
            'validation': {
                'clazz': 'hvalidation.validation.Validation',
             },
        }
        
        from hehe import he
        
        validateData = {
            'username': 'hehe',
        };
        
        validateRules = [
            ['username',[ ['required'],['alphaNum'] ],{'message':'请输入的字符必须包含字母字符'}],
        ];
        
        if not he.app.validation.validate(validateData,validateRules):
            print("验证错误:{0}".format(he.app.validation.getFirstError()))
        else:
            print('验证通过!')
        
        ```
        
        - 多个验证器
        ```python
        validateRules = [
            ['title',[ ['required'],['len',{"min":2,"max":200}] ],{'message':'请输入一个长度介于 {min} 和 {max} 之间的字符串'}],
        ];
        
        ```
        
        - 验证多个属性
        ```python
        validateRules = [
            [['userid','username'],[['!empty']],{'message':'参数不能为空'}],
        ];
        ```
        
        - 验证多维数组
        ```python
        validateRules = [
            [['user.userid'],[['!empty']],{'message':'参数不能为空'}],
        ];
        ```
        
        - 多个验证器支持与或 or,and,&,|
        ```python
        validateRules = [
            ['username',[['!empty'],['minlen',{'number':1}]],{'message':'请输入一个10-20位的字符串'}],
            ['age',['and',['int'],['minlen',{'number':10}]],{'message':'你的输入的年龄有误,年龄必须超过10 岁！'}],
            ['age1',['or',['int'],['minlen',{'number':10}]],{'message':'你的输入的年龄有误,年龄必须超过10 岁！'}],
        ];
        ```
        
        - 设置验证规则错误消息
        ```python
        
        validateRules = [
            ['username',[['!empty']],{'message':'不能为空'}],
        ];
        
        ```
        
        - 设置验证器错误消息
        ```python
        validateRules = [
            ['age',[['!empty'],['minlen',{'number':1,"message":"请输入的值必须大于1"}]],{'message':'不能为空'}],
        ];
        
        ```
        
        - 设置验证规则使用场景
        ```python
        validateRules = [
            ['username',[['!empty'],['minlen',{'number':1}]],{'message':'请输入一个10-20位的字符串','on':['create','update','login']}],
        ];
        ```
        
        - 设置验证规则的前置条件
        ```python
        def validint(value,name,validator):
        
            if isinstance(value,int):
                return True
        
            else:
                return False
        
        
        validateRules = [
            ['userid',[['!empty']],{'message':'你输入格式错误','when':validint}],
        ];
        
        ```
        
        - 添加自定义验证器
        ```python
        from hvalidation.validation import Validation
        validation = Validation()
        validation.addValidator("ip6",'app.utils.IpValidator.IpValidator','请输入ip格式')
        
        validateRules = [
            ['userip',[['!empty'],['ip6']],{'message':'你输入格式错误'}],
        ];
        
        ```
        
        - 验证器直接为方法或函数
        ```python
        
        def validint(value,name,validator):
        
            if isinstance(value,int):
                return True
        
            else:
                return False
        
        
        validateRules = [
            ['userid',[['!empty'],[validint]],{'message':'请输入一个整型数值'}],
        ];
        
        ```
        
        - 直接使用验证器验证
        ```python
        from hvalidation.validation import Validation
        validation = Validation()
        # 验证ip6 
        validation.ip('102.021.054.11',mode = 'ip6');
        
        ```
        
        - 装饰器注册验证器
        ```python
        from hvalidation.validation import reg_validator
        
        # 注册函数方法验证器 
        @reg_validator('用户名不能为空','可定义验证器别名,可不填')
        def username(self,value,name = None):
        
            if value:
                return True
            else:
                return False;
        
        
        
        # 注册类验证器,创建文件IpValidator.py
        from hvalidation.base.Validator import Validator
        import re;
        @reg_validator('ip 格式有误','ip')
        class IpValidator(Validator):
        
            def __init__(self,attrs,validation = None):
                self.pattern = r'^(\d+\.\d+\.\d+\.\d+)$'
                super().__init__(attrs,validation)
        
        
            def validateValue(self,value,name = None):
        
                if re.match(self.pattern, value) is not None:
                    return True
                else:
                    return False
        
        
        ```
        
        - 装饰器注册验证规则
        ```python
        from hvalidation.validation import Validation,reg_valid_rule
        
        class Address:
            @reg_valid_rule("ip", property="myuser", attrs={"message": "hehe"})
            @reg_valid_rule("float", property="myuser", attrs={"message": "hehe"})
            def __init__(self):
        
                self.myuser = "什么规则"
        
        validation = Validation()
        address = Address()
        if not validation.validate(address):
            print("验证错误:{0}".format(validation.getFirstError()))
        else:
            print('验证通过!')
            
        #或
        
        if not validation.validateObject(address):
            print("验证错误:{0}".format(validation.getFirstError()))
        else:
            print('验证通过!')
        
        
        ```
        
        
        ### 默认验证器
        验证器 | 说明 | 规则示例
        ----------|-------------|------------
        `required`  | 必填字段 | `['fieldname', ['required'] ]`
        `empty`  | 不为空字段,常配合!使用 | `['fieldname', ['empty'] ]`，`['fieldname', ['!empty'] ]`
        `float`  | 数值必须为浮点数,即整型,或带小数点的数值 | `['fieldname', ['float'] ]`
        `int`  | 数值必须为整型 | `['fieldname', ['int'] ]`
        `boolean`  | 数值必须为布尔值,True or False | `['fieldname', ['boolean'] ]`
        `tel`  | 11 位手机号 | `['fieldname', ['tel'] ]`
        `date`  | 验证日期格式 | `['fieldname', ['date',{"format":'Y-m-d'}] ]`
        `rangedate`  | 验证日期范围 | `['fieldname', ['date',{"min":'2019-10-10','max':'2010-10-11'}] ]`
        `email`  | 验证邮箱格式 | `['fieldname', ['email'] ]`
        `ip`  | 验证ip格式,支持mode 格式 ip4,ip6 | `['fieldname', ['ip',{"mode":"ip4"}]`
        `ip4`  | 验证ip4格式 | `['fieldname', ['ip4']]`
        `ip6`  | 验证ip6格式 | `['fieldname', ['ip6']]`
        `url`  | 验证url 地址格式,支持设置defaultScheme | `['fieldname', ['url',{"defaultScheme":"https"}]]`
        `range`  | 验证数值范围大小 | `['fieldname', ['range',{"min":10,'max':20}] ]`
        `compare`  | 比较指定数值大小,支持操作符,'gt','egt','lt','elt','eq','>','>=','<','<=','=' | `['fieldname', ['compare',{"number":10,"operator":"gt"}] ]`
        `eq`  | 验证数值相等,compare 操作符 eq 的简写  | `['fieldname', ['eq',{"number":1}]]`
        `gt`  | 验证数值大于,compare 操作符 gt 的简写  | `['fieldname', ['gt',{"number":1}]]`
        `egt`  | 验证数值大于等于,compare 操作符 egt 的简写  | `['fieldname', ['egt',{"number":1}]]`
        `lt`  | 验证数值小于,compare 操作符 lt 的简写  | `['fieldname', ['lt',{"number":1}]]`
        `elt`  | 验证数值小于等于,compare 操作符 elt 的简写  | `['fieldname', ['elt',{"number":1}]]`
        `minlen`  | 验证字符最小长度  | `['fieldname', ['minlen',{"number":1}]]`
        `maxlen`  | 验证字符最大长度  | `['fieldname', ['maxlen',{"number":1}]]`
        `len`  | 验证字符最大范围  | `['fieldname', ['maxlen',{"min":1,"max":100}]]`
        `currency`  | 验证货币数值,比如0.51,支持设置小数点位数decimalPoint  | `['fieldname', ['maxlen',{"decimalPoint":2}]]`
        `ch`  | 验证中文格式 | `['fieldname', ['ch']]`
        `en`  | 验证英文格式 | `['fieldname', ['en']]`
        `alpha`  | 验证包含字母字符[a-z_A-Z]格式 | `['fieldname', ['alpha']]`
        `alphaNum`  | 验证包含字母、数字格式 | `['fieldname', ['alphaNum']]`
        `alphaDash`  | 验证字母、数字、破折号（ - ）以及下划线（ _ ）格式 | `['fieldname', ['alphaDash']]`
        `inlist`  | 输入的值必须包含在指定的列表 | `['fieldname', ['inlist']]`
        `enum`  | 输入的值必须包含在指定的列表 | `['fieldname', ['enum']]`
        `notin`  | 输入的值必须不包含在指定的列表 | `['fieldname', ['notin']]`
        `vlist`  | 验证列表里每个元素的类型 | `['fieldname', ['vlist',[ ['int'],['minlen'] ]]]`
        `eqstrfield`  | 验证字段与指定字段值是否相等 | `['fieldname', ['eqstrfield',{"field":"confirmpassword"}]]]`
        `eqintfield`  | 验证字段与指定字段数值是否相等 | `['fieldname', ['eqintfield',{"field":"age"}]]]`
        `gtintfield`  | 验证字段与指定字段数值是否大于 | `['fieldname', ['gtintfield',{"field":"age"}]]]`
        `egtintfield`  | 验证字段与指定字段数值是否大于等于 | `['fieldname', ['egtintfield',{"field":"age"}]]]`
        `ltintfield`  | 验证字段与指定字段数值是否小于 | `['fieldname', ['ltintfield',{"field":"age"}]]]`
        `eltintfield`  | 验证字段与指定字段数值是否小于等于 | `['fieldname', ['eltintfield',{"field":"age"}]]]`
        
        `gtdatefield`  | 验证日期字段与指定日期字段数值是否大于 | `['enddate', ['gtdatefield',{"field":"startdate"}]]]`
        `egtdatefield`  | 验证日期字段与指定日期字段数值是否大于等于 | `['enddate', ['egtdatefield',{"field":"startdate"}]]]`
        `ltdatefield`  | 验证日期字段与指定日期字段数值是否小于 | `['enddate', ['ltdatefield',{"field":"startdate"}]]]`
        `eltdatefield`  | 验证日期字段与指定日期字段数值是否小于等于 | `['enddate', ['eltdatefield',{"field":"startdate"}]]]`
Platform: UNKNOWN
Description-Content-Type: text/markdown
