drf中save以及response的源码分析
一.save
其中比较重要的源码
if self.instance is not None:
self.instance = self.update(self.instance, validated_data)
assert self.instance is not None, (
‘`update()` did not return an object instance.‘
)
else:
self.instance = self.create(validated_data)
assert self.instance is not None, (
‘`create()` did not return an object instance.‘
)
return self.instance这里很明显就可以看出save我们传参instance的由于决定了他后续是运行create还是updata方法
二、response
涉及其中的参数的源码
#传入的参数
def __init__(self, data=None, status=None,
template_name=None, headers=None,
exception=False, content_type=None):
#他对于参数进行的赋值
self.data = data
self.template_name = template_name
self.exception = exception
self.content_type = content_type
data:响应的数据 - 空、字符串、数字、列表、字段、布尔
status:网络状态码
template_name:drf说自己也可以支持前后台不分离返回页面,但是不能和data共存(不会涉及)
headers:响应头(不用刻意去管)
exception:是否是异常响应(如果是异常响应,可以赋值True,没什么用)
content_type:响应的结果类型(如果是响应data,默认就是application/json,所以不用管)常见使用
Response(
data={
‘status‘: 0,
‘msg‘: ‘ok‘,
‘result‘: ‘正常数据‘
}
)
Response(
data={
‘status‘: 1,
‘msg‘: ‘客户端错误提示‘,
},
status=status.HTTP_400_BAD_REQUEST,
exception=True
)