27. Django_framework_序列化器和自定义校验

一、序列化器中的类属性字段

  • 序列化中所定义的类属性字段,一般情况下与模型类字段相对应
  • 默认情况下,这些类属性字段既可以进行序列化输出,也可以进行反序列化输入
  • 不需要输入(反序列化)、输出(序列化)的字段,则不需要定义
  • 只需要反序列化输入,则定义write_only = True
  • 只需要序列化输出,则定义read_only = True
  • 响应的参数如果是多个查询集,需要在JsonResponse()中传参many=True
  • label:当前字段在前端的api页面中所显示的字段名称
  • allow_null = False:当前字段是否允许传None,默认是False(必填字段False,反之则True)
  • allow_blank = False:当前字段是否运行为空,默认是False(必填字段False,反之则True)

二、反序列化_校验机制

  • 调用序列化器对象的is_valid()方法,校验前端参数的正确性,不调用则不校验
  • 校验成功返回True、校验失败返回False
  • is_valid(raise_exception = True):校验失败后,则抛出异常
  • 当调用is_valid()之后,才能调用序列化器对象的errors属性,内容为校验的错误提示(dict)
  • views.py中,如果传参进行了输入反序列化的话,那么需要调用的是经过校验后的数据,比如说新增数据,应该是:xxx类.objects.create(**serializer.validated_data)
    try:
        # 不符合规则则抛出错误
        serializer.is_valid(raise_exception=True)  
    except Exception as e:
        # 返回序列化器原有的dict类型的错误信息
        return JsonResponse(serializer.errors)

三、rest_framework的校验器(用于validators=校验器)

rest_framework.framework中有有多个验证器,这里用其中一个最常见的UniqueValida

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值