# data_format 扩展
数据格式扩展
- data_format.datetime 可以用来填写在conf.methods参数列表中的type,将request参数中的字符串
"2019-01-01 08:30:00"
转换成datetime格式 - data_format.DataExpansion 自定义扩展基础类
# data_format.datetime
from api_shop import data_format
conf = [
{
'url': 'test',
'class': 'account.views.api_test',
'name': '测试方法',
'methods': {
'POST': [
{'name':'time', 'type': data_format.datetime, 'required': True, 'min': '2018-01-01', 'max': '2019-12-31', 'description': '时间'}
],
}
},
]
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
# 提交请求的时候,会把传入的time参数转换成datetime格式,并检查是否大于等于2018年1月1日,小于等于2019年12月31日。
# data_format.regex 正则格式校验
将对上传的字符串进行正则校验。 调用方法:
from src.api_shop import data_format
conf = [
{
'url': 'test',
'class': 'business_code.views.api_test',
'name': '测试接口',
'methods': {
'POST': [
{'name': 'email',
'type': data_format.regex(
r'^[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+){0,4}@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+){0,4}#39;,name='邮箱'),
'required': True,
'min': 6,
'max': 24,
'description': '邮箱'
},
{'name':'idcard', 'type': data_format.idcard, 'required': True, 'description': '身份证'},
]
}
},
]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 内置更多的快速正则校验
- data_format.numeric 数字型字符串
- email 邮箱
- data_format.chinese 中文
- data_format.url url格式
- data_format.cellphone 手机号码
- data_format.idcard 身份证号码
# data_format.DataExpansion 自定义数据类型
from api_shop.data_format import DataExpansion
from datetime import datetime as dt
class datetime(object,metaclass=DataExpansion):
'''将str转换成datetime格式'''
class_name = "<class 'data_format.datetime'>"
def __new__(self, string):
if ':' in string:
return dt.strptime(string, '%Y-%m-%d %H:%M:%S')
else:
return dt.strptime(string, '%Y-%m-%d')
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
TIP
继承的时候请按照上面的写法,继承为元类,并直接用__new__方法来返回一个全新的格式