各个字段类,含正则和验证方法

#字段类
class IPField:
    REGULAR = "^(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}"

    def __init__(self,error_dict=None,required=True):
        self.error_dict={}
        if error_dict:
            self.error_dict.update(error_dict)
        self.required=required
        self.error=None
        self.is_valid=False
        self.value=None

    def validate(self,name,input_value):
        if not self.required: #允许为空
            if input_value.strip():
                ret = re.match(IPField.REGULAR, input_value)
                if ret:
                    self.is_valid = True
                    self.value = ret.group()
                else:
                    if self.error_dict.get('valid', None):
                        self.error = self.error_dict['valid']
                    else:
                        self.error = "%s is invalid" % name
            else:
                self.is_valid = True
                self.value=input_value
        else:   #不允许为空
            if not input_value.strip():
                if self.error_dict.get('required',None):
                    self.error=self.error_dict['required']
                else:
                    self.error="%s is required"%name
            else:
                ret = re.match(IPField.REGULAR,input_value)
                if ret:
                    self.is_valid=True
                    self.value=ret.group()
                else:
                    if self.error_dict.get('valid',None):
                        self.error=self.error_dict['valid']
                    else:
                        self.error="%s is invalid"%name


#可以含有多个文件名
class FileField:
    REGULAR = "^(\w\.pdf)|(\w\.mp3)|(\w\.py)$"

    def __init__(self,error_dict=None,required=True):
        self.error=None
        self.success_file_name_list={}
        self.value=None
        self.is_valid=True#后面只要有一个错误,就是错
        self.required=required
        self.error_dict={}
        if error_dict:
            self.error_dict.update(error_dict)

    def validate(self,name,all_file_name_list):#all_file_name_list所有文件文件名
        if not self.required:
            # if not input_value.strip():
            #     ret=re.match(FileField.REGULAR,input_value)
            #     if ret:
            #         self.is_valid=True
            #         self.value=input_value
            #     else:
            #         if self.error_dict.get('valid',None):
            #             self.error=self.error_dict['valid']
            #         else:
            #             self.error="%s is invalid"%name
            # else:
            #     self.is_valid=True
            #     self.value=input_value
            if not all_file_name_list:
                self.is_valid=True
            else:
                #循环匹配所有
                for input_value in all_file_name_list:
                    ret = re.match(FileField.REGULAR, input_value)
                    if ret:
                        self.success_file_name_list.append(input_value)
                    else:
                        self.is_valid=False
                        if self.error_dict.get('valid', None):
                            self.error = self.error_dict['valid']
                        else:
                            self.error = "%s is invalid" % name
                        break
        else:
            if not all_file_name_list:
                self.is_valid=False
                if self.error_dict.get('required',None):
                    self.error=self.error_dict['required']
                else:
                    self.error="%s is required"%name
            else:
                #循环匹配所有
                for input_value in all_file_name_list:
                    ret = re.match(FileField.REGULAR, input_value)
                    if ret:
                        self.success_file_name_list.append(input_value)
                    else:
                        self.is_valid=False
                        if self.error_dict.get('valid', None):
                            self.error = self.error_dict['valid']
                        else:
                            self.error = "%s is invalid" % name
                        break


#字符串验证
class StringField:
    REGULAR = "(.*)"

    def __init__(self,error_dict=None,required=True):
        self.is_valid=False
        self.value=None
        self.error=None
        self.error_dict={}
        if error_dict:
            self.error_dict.update(error_dict)
        self.required=required

    def validate(self,name,input_value):
        if not self.required:   #允许为空
            if input_value.strip():
                ret = re.match(StringField.REGULAR,input_value)
                if ret:
                    self.is_valid=True
                    self.value=input_value
                else:
                    if self.error_dict.get('valid',None):
                        self.error=self.error_dict['valid']
                    else:
                        self.error="%s is invalid"%name
            else:
                self.is_valid=True
                self.value=input_value
        else:#不允许为空
            if not input_value.strip():
                if self.error_dict.get('required',None):
                    self.error=self.error_dict['required']
                else:
                    self.error="%s is required"%name
            else:
                ret=re.match(StringField,input_value)
                if ret:
                    self.is_valid=True
                    self.value=input_value
                else:
                    if self.error_dict.get('valid',None):
                        self.error=self.error_dict['valid']
                    else:
                        self.error="%s is invalid"%name

#复选框验证
class CheckBoxField:
    def __init__(self,required=True,error_dict=None):
        self.is_valid=False
        self.error=None
        self.required=required
        if error_dict:
            self.error_dict=error_dict
        self.value=None

    def validate(self,name,input_value):
        #用户表单输入的数据可以为空
        if not self.required:
            self.is_valid=True
            self.value=input_value
        else:
            if not input_value:
                if self.error_dict.get('required',None):
                    self.error=self.error_dict['required']
                else:
                    self.error="%s is required"%name
            else:
                self.is_valid=True
                self.value=input_value
View Code

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-11-23
  • 2021-09-01
  • 2021-09-05
猜你喜欢
  • 2021-12-30
  • 2021-12-17
  • 2021-10-05
  • 2021-12-09
  • 2022-02-16
  • 2022-02-03
相关资源
相似解决方案