Django的rest_framework的视图之基于通用类编写视图源码解析

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

1、queryset的视图函数

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

from rest_framework import mixins
from rest_framework import generics

class 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

时间: 2024-08-02 04:58:16

Django的rest_framework的视图之基于通用类编写视图源码解析的相关文章

Spring3.2 中 Bean 定义之基于 XML 配置方式的源码解析

Spring3.2 中 Bean 定义之基于 XML 配置方式的源码解析 本文简要介绍了基于 Spring 的 web project 的启动流程,详细分析了 Spring 框架将开发人员基于 XML 定义的 Bean 信息转换为 Spring 框架的 Bean Definition 对象的处理过程,向读者展示了 Spring 框架的奥妙之处,可以加深开发人员对 Spring 框架的理解. 0 评论: 秦 天杰, 软件工程师, IBM China 2013 年 9 月 02 日 内容 在 IBM

Django的rest_framework的视图之基于ModelViewSet视图源码解析

前言 今天一直在整理Django的rest_framework的序列化组件,前面一共写了2篇博客,前面的博客给的方案都是一个中间的状态的博客,其中有很多的冗余的代码,如果有朋友不清楚,可以先看下我前面的博客 第一篇,使用minix类来实现序列化和反序列化 https://www.cnblogs.com/bainianminguo/p/10463741.html 第二篇,使用通用的类的方法实现序列化和反序列化 https://www.cnblogs.com/bainianminguo/p/1046

Django的rest_framework的视图之Mixin类编写视图源码解析

Mixin类编写视图 我们这里用auther表来做演示,先为auther和autherdetail写2个url url(r'^autherdetail/(?P<id>\d+)', views.Book_detail_cbv.as_view(), name="autherdetail"), url(r'^auther/', views.Book_cbv.as_view(),name="auther"), 然后分别为这2个类写对应的序列化的类 class a

通用OA+权限管理系统源码 联系QQ:847129860

通用OA+权限管理系统源码 功能介绍:    1.本程序分为系统后台管理,内网,论坛,外网,外网后台管理    2.开发工具为VS2010,MVC4(razor视图引擎),数据访问为EntityFramework4.4,数据库为sql server 2008,UI插件为jquery-easyui-1.3.0,编辑器为kindeditor,上传文件为uploadify,表格插件Flexigrid,相册插件为lightbox    3.工程分为:CommWeb,Core,DAL,Entity,Too

如何基于android4.4.2的源码和android-4.3.1_r1的驱动编译I9250的ROM

如何基于android4.4.2的源码和android-4.3.1_r1的驱动编译I9250的ROM 作者:雨水  2014-05-04 联系方式:dennis.hu.cd at gmail.com 说明:经过多番折腾,终于把自己编译的Android4.4.2的源代码成功地跑在我的三星Galaxy Nexus I9250手机上了.期间离不开一位外国朋友的帮助,也就是参考资料[1]的作者Sato Kensuke. 这里将过程记录下来,希望对大家有所帮助! 第一步:下载android-4.4.2_r

基于vitamio的网络电视直播源码

这个项目是基于vitamio的网络电视直播源码,也是一个使用了vitamio的基于安卓的网络直播项目源码,可能现在网上已经有很多类似这样的视频播放应用了,不过这个还是相对来说比较完整的,希望这个案例能够给大家参考一下. 源码下载: http://code.662p.com/view/10061.html 运行截图 运行截图 运行截图 运行截图 详细说明:http://android.662p.com/thread-6139-1-1.html

Android应用源码基于vitamio的网络电视直播源码

这个项目是基于vitamio的网络电视直播源码,也是一个使用了vitamio的基于安卓的网络直播项目源码,可能现在网上已经有很多类似这样的视频播放应用了,不过这个还是相对来说比较完整的,希望这个案例能够给大家参考一下. 源码下载: http://code.662p.com/view/10061.html <ignore_js_op>  运行截图 <ignore_js_op>  运行截图 <ignore_js_op>  运行截图 <ignore_js_op> 

iOS开发- 自定义遮罩视图(引导, 功能说明)源码+解析

iOS开发- 自定义遮罩视图(引导, 功能说明)源码+解析 我们平时使用App的时候, 经常在第一次使用的时候, 会有类似"新手教程"之类的东西, 来引导我们应该如何使用这个App. 但是这个"新手教程"不同于常规的引导页(引导页指第一次打开App时候, 弹出的那种介绍视图. 他是静态的, 不需要与用户交互, 可以直接一页页翻, 或者直接跳过.)所谓的"新手教程", 就是按照App的提示, 一步步跟着完成. 那这个"新手教程"

.Net Core 认证系统之基于Identity Server4 Token的JwtToken认证源码解析

介绍JwtToken认证之前,必须要掌握.Net Core认证系统的核心原理,如果你还不了解,请参考.Net Core 认证组件源码解析,且必须对jwt有基本的了解,如果不知道,请百度.最重要的是你还需要掌握identity server4的基本用法,关于identity server4因为设计到两个协议Oath2.0和openid connect协议,内容较多,不是本文重点,后续有时间我会写一片关于identity server4的源码分析.且为了保证整个系统的高度可控,我重写了整个id4,留