drf源码save以及response

drf源码save以及response,第1张

概述drf源码save以及response 一.save python if self.instance is not None: self.instance = self.update(self.ins 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方法

我们也可以不用save,可以自定义create 方法和updata方法因为他本质就是调用create和updata方法

注意点:我们自定义优先级必须大于drf自带的方法的优先级,所有我们把这两个方法创建在模型中比较合适

二.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

我们可以通过类的继承来修改源码

"""返回值Response({    'status': 0,'msg': 'ok','results': [],'token': ''},headers={},status=200,content_type="")"""'''比如说我们想要的效果APIResponse(0,'ok',results,其他数据)'''from rest_framework.response import Responseclass APIResponse(Response):    def __init__(self,data_status,data_msg,results=None,content_type=None,**kwargs):        data = {            'status': data_status,'msg': data_msg        }        if results is not None:            data['results'] = results        data.update(kwargs)        super().__init__(data=data,status=status,headers=headers,content_type=content_type)
总结

以上是内存溢出为你收集整理的drf源码save以及response全部内容,希望文章能够帮你解决drf源码save以及response所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1222962.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存