当前位置: 首页 > 工具软件 > webargs > 使用案例 >

pythonWeb webargs 参数比较

姚骁
2023-12-01

**最近在查询数据的时候频繁的使用到开始时间,结束时间来进行查询,因为前端传递的时间格式为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 
 类似资料: