博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Django的rest_framework的视图之基于通用类编写视图源码解析
阅读量:6007 次
发布时间:2019-06-20

本文共 1943 字,大约阅读时间需要 6 分钟。

我们上一篇博客讲解了如何使用mixins类实现rest_framework的视图,但是其中有很多的冗余的代码,我们这边在来优化一下

1、queryset的视图函数

首先看下对queryset操作的视图类是怎么写的

from rest_framework import mixinsfrom rest_framework import genericsclass Auther_view(generics.ListCreateAPIView):    queryset = models.Auther.objects.all()    serializer_class = authermodelserializer

  

直接这样写就ok了,为什么呢?我们来看下generics.ListCreateAPIView类,不仅仅继承了我们之前写的3个类,还帮我们写了get和post方法,所以我们直接用上面的方法就是mixin类中的效果

class ListCreateAPIView(mixins.ListModelMixin,                        mixins.CreateModelMixin,                        GenericAPIView):    """    Concrete view for listing a queryset or creating a model instance.    """    def get(self, request, *args, **kwargs):        return self.list(request, *args, **kwargs)    def post(self, request, *args, **kwargs):        return self.create(request, *args, **kwargs)

  

2、model对象的视图

类只需要继承generics.RetrieveUpdateDestoryAPIView在一个类就可以了

class Autherdetail_view(generics.RetrieveUpdateDestroyAPIView):    queryset = models.Auther.objects.all()    serializer_class = authermodelserializer

  

这个类generics.RetrieveUpdateDestoryAPIView同样继承了我们我们想要的其他四个类,而且还帮我们重写了get、delete、put方法

 

class RetrieveUpdateDestroyAPIView(mixins.RetrieveModelMixin,                                   mixins.UpdateModelMixin,                                   mixins.DestroyModelMixin,                                   GenericAPIView):    """    Concrete view for retrieving, updating or deleting a model instance.    """    def get(self, request, *args, **kwargs):        return self.retrieve(request, *args, **kwargs)    def put(self, request, *args, **kwargs):        return self.update(request, *args, **kwargs)    def patch(self, request, *args, **kwargs):        return self.partial_update(request, *args, **kwargs)    def delete(self, request, *args, **kwargs):        return self.destroy(request, *args, **kwargs)

  

至此,基于通用类实现rest_framework的视图就讲解完了

 

转载于:https://www.cnblogs.com/bainianminguo/p/10463784.html

你可能感兴趣的文章
vs2015 cordova环境安装【个人遇到的几个问题】
查看>>
数据结构------线段树1:概述与建树
查看>>
使用path制作各类型动画路径
查看>>
Linux yum出现GPG密钥不匹配
查看>>
AssetBundle使用模式
查看>>
apache cxf
查看>>
javascript语言精髓与编程实践摘要
查看>>
Red Hat 第四季度总营收为8.79亿美元,低于预期
查看>>
Node.js 事件循环
查看>>
用CSS绘制三角形
查看>>
区块链开发公司浅析未来区块链的发展趋势
查看>>
mysql5.7密码策略及修改技巧
查看>>
KDevelop 5.3.2 发布,跨平台 IDE
查看>>
JAVA中的设计模式一(单例模式)
查看>>
WEBGL学习【十】运动模型
查看>>
《癌症·真相》读书简摘
查看>>
社交网络分析(Social Network Analysis in Python)①
查看>>
JS数据结构与算法-栈
查看>>
Spring注入内部bean
查看>>
mysql 唯一索引与null.md
查看>>