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 )