Browse Source

feat: 新增@Pattern字段校验装饰器

master
insistence 10 months ago
parent
commit
212f981b6a
  1. 28
      ruoyi-fastapi-backend/module_admin/annotation/check_annotation.py

28
ruoyi-fastapi-backend/module_admin/annotation/check_annotation.py

@ -58,6 +58,34 @@ class NotBlank:
return wrapper
class Pattern:
"""
字段正则校验装饰器
"""
def __init__(self, field_name: str, regexp: str, message: Optional[str] = None):
"""
字段正则校验装饰器
:param field_name: 需要校验的字段名称
:param regexp: 正则表达式
:param message: 校验失败的提示信息
:return:
"""
self.field_name = field_name
self.regexp = regexp
self.message = message
def __call__(self, func):
@wraps(func)
def wrapper(*args, **kwargs):
check_model = args[0]
if isinstance(check_model, BaseModel):
field_value = getattr(check_model, self.field_name)
if isinstance(field_value, str) and not re.match(self.regexp, field_value):
raise FieldValidatorException(message=self.message if self.message else f'{self.field_name}格式不正确')
return func(*args, **kwargs)
return wrapper
class Size:
"""
字段大小校验装饰器

Loading…
Cancel
Save