**最近在查询数据的时候频繁的使用到开始时间,结束时间来进行查询,因为前端传递的时间格式为yyyy-mm-dd 当查询到当天的时候就需要把结束时间加一天或者拼接上23:59:59不然查不到数据。 正好项目中使用webargs参数校验, 发现在基本的参数检验上 使用@post_load也可以对参数做进一步的处理 例如做数据验证(开始时间必须小于结束时间)或者结束时间拼接上23:59:59字符串 项目是django项目 3.7的python 代码如下 **
import marshmallow
from marshmallow import Schema, fields, post_load
class DateSchema(Schema):
"""
通用检测, 开始时间, 结束时间, 规定开始时间不能大于或等于结束时间
"""
def __init__(self):
super().__init__()
self.unknown = marshmallow.INCLUDE
endDate = fields.Str(required=True)
startDate = fields.Str(required=True)
@post_load
def validate_start_date(self, data, **kwargs):
end_date = f'{data.get("endDate")} 23:59:59'
if data.get('startDate') > end_date:
raise
data.update({'endDate':end_date})
return {**data}
parser = djangoparser.DjangoParser()
@parser.use_args(StartLEEndSchema(), location='query')
def demo(request, args):
"""
获取发布单信息
:param request:
:param args: webargs过滤之后的参数集合
:return:
"""
start_date = args.get('startDate')
end_date = args.get('endDate')
return