一、序列化器中的类属性字段
- 序列化中所定义的类属性字段,一般情况下与模型类字段相对应
- 默认情况下,这些类属性字段既可以进行序列化输出,也可以进行反序列化输入
- 不需要输入(反序列化)、输出(序列化)的字段,则不需要定义
- 只需要反序列化输入,则定义
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