APIview:

  我们经常写的是view  这个APIview继承了我们的view,并且对请求进来的信息进行设置,

在APIView这个例子中,调用了drf本身的serializer以及Response方法。
  APIView对django本身的View进行封装,从上述的代码,这样分析,两者的差别看起来不是很大,但实际中APIView做了很多东西,它定义了很多属性与方法,举几个例子
# 这三个是常用的属性
authentication_classes : 用户登录认证方式,session或者token等等
permission_classes : 权限设置,是否需要登录等
throttle_classes : 限速设置,对用户进行一定的访问次数限制等等。

我们可以点击APIview进去 然后找到其中的奥妙,读取到restframework的具体源码

ViewSetMixin

你平时在写url的比如一个get 有带参数 有不带参数的 那么 我们不仅仅要写两个url还要写两个类

这个时候我们的 就可以继承 ViewSetMixin   来解决了

继承的时候  ViewSetMixin   必须要放在继承的最前面 因为你同时继承  ViewSetMixin    和APIView的时候 他们同时都有as_view()方法 ,这个时候我们就要先用 ViewSetMixin  中的as_view所以他要写在前面

这个是用来让你的url中的as_view中直接设置你的请求的方式的对应的方法  我们在下面可以把我们的post  get的请求的方式对应的方法名给改变

我们先导入 :
from rest_framework.viewsets import  ViewSetMixin   # 这个是用来让你的url中的as_view中直接设置你的请求的方式的对应的方法  我们在下面可以把我们的post  get的请求的方式对应的方法名给改变

然后我们下面的vies中的发的方法就可以自定义名字了:

我们的这个方法也要在url中声明:

这就是设置不同的请求方式 对应不同的方法

这样就会省去一个类  两个url对应同一个 请求类

 

ListModelMixin,GenericViewSet 搭配用法:

class Course(ListModelMixin,GenericViewSet):
queryset = models.Course.objects.all() #queryset是封装的方法
def list(self,request,*args,**kwargs): # 这个时候的list就是自带的 也可以重写告诉url他的请求就是list
course_list = models.Course.objects.all() # 我们也可以进行重写 queryset

urls:

urlpatterns = [
url(r'courses/$',course.CoursesView.as_view({'get':'list'})), # 告诉它 它的get就去找list
url(r'courses/(?P<pk>\d+)/$',course.CoursesView.as_view({'get':'retrieve'}))
]

优化REST Framework 的 路由 APIView 和ViewSetMixin的更多相关文章

  1. django-rest-framework-源码解析003-视图家族和路由(APIView/GenericAPIView/mixins/generics/viewsets)

    视图家族 视图家族在rest_framework源码位置和学习曲线为: rest_framework.views: 基本视图(APIView) rest_framework.generics: 工具视 ...

  2. rest framework 之路由系统

    一.自定义路由 1.urls.py from django.conf.urls import url, include from web.views import s11_render urlpatt ...

  3. rest framework之路由组件

    一.路由组件的使用 1.使用实例 在视图中继承GenericViewSet类来完成功能时,需要自己对路由的写法有所改变,需要在as_view中传入actions字典参数: re_path('books ...

  4. django的rest framework框架——分页、视图、路由、渲染器

    一.rest framework的分页 1.使用rest framework内置类PageNumberPagination实现分类 from django.conf.urls import url f ...

  5. vue项目性能优化(路由懒加载、gzip加速、cdn加速)

    前端工程性能优化一说意义深远悠长,本章主要介绍除了一些基础优化外如何实行路由懒加载.Gzip加速.CDN加速,让网页飞的快一些. 基础优化 老生常谈的一些: 不要在模板中写复杂的表达式 慎用watch ...

  6. rest framework之APIView

    一.rest framework配置 1.安装rest framework 在django环境中安装rest-framework框架: (automatic) C:\Users\Administrat ...

  7. django rest framework restful 规范

    内容回顾: . django请求生命周期 -> 执行遵循wsgi协议的模块(socket服务端) -> 中间件(路由匹配) -> 视图函数(业务处理:ORM.模板渲染) -> ...

  8. Django Rest framework 之 视图

    RESTful 规范 django rest framework 之 认证(一) django rest framework 之 权限(二) django rest framework 之 节流(三) ...

  9. 19-视图集ViewSet和路由Routers

    一.视图集ViewSet 使用视图集ViewSet,可以将一系列逻辑相关的动作放到一个类中: 1.list()提供一组数据 2.retrieve()提供单个数据 3.create()创建数据 4.up ...

随机推荐

  1. Chapter 3 Phenomenon——18

    My intuition flickered; the doctor was in on it. 我的直觉告诉我:这个医生也参与了. 我灵光一闪:这医生熟悉内情. "I'm afraid t ...

  2. WPF 进程间传递参数

    WPF 进程间传递参数          在软件开发中有时需要在一个软件中启动另一个软件,这时用Process.Start(“软件路径”)可以启动另一个软件.如果在这个过程中还需要传递一些参数给新启动 ...

  3. Fiddler——PC上实现手机的抓包(转载 http://www.jianshu.com/p/13f8a81d7c7c)

    Fiddler是15年初,在千牛中做超级促销插件时,发现没有root的Android机和没有越狱的iPhone无法修改host,因此没办法测试.为了让我这个磨人的PD也能看到,开发推荐了Fiddler ...

  4. 关于打开fiddler后电脑无法正常上网的解决办法(fiddler抓包时的设置)

    关于fiddler如何抓取  ie内容(其中:360浏览器和qq浏览器均使用ie内核) 1.打开fiddler,进入tools-options,设置如下.这样配置后,打开fiddler,fiddler ...

  5. 什么是汉明窗?加Hanmming窗的作用?

    什么是汉明窗?加Hanmming窗的作用? 1.什么是汉明窗? 答:我是做语音识别的,我就从语音的角度跟你说一下吧. 语音信号一般在10ms到30ms之间,我们可以把它看成是平稳的.为了处理语音信号, ...

  6. .NET环境下使用水晶报表

    .NET环境下使用水晶报表 听语音 | 浏览:3280 | 更新:2013-12-20 13:36 1 2 3 4 5 6 7 分步阅读 水晶报表(Crystal Reports)-商务智能软件,通常 ...

  7. 让自己的程序支持livewriter

    参考 http://www.cnblogs.com/Dah/archive/2007/04/02/697312.html 使用MetaWeblog. 在上面的博客里,基本说明了如何设置.   根据cn ...

  8. 从一个带有http://网络文件中获取文件名

    例如文件网址为: http://a.hiphotos.baidu.com/image/h%3D200/sign=c3da85e50123dd543e73a068e108b3df/80cb39dbb6f ...

  9. java基础之基础语法详录

    [前言] java的语法先从基础语法学,Java语言是由类和对象组成的,其对象和类又是由方法和变量组成,而方法,又包含了语句和表达式. 对象:(几乎)一切都是对象,比如:一只熊猫,他的外观,颜色,他在 ...

  10. js判断用户是否离开当前页面

    简介 VisibilityChange 事件:用于判断用户是否离开当前页面 Code // 页面的 visibility 属性可能返回三种状态 // prerender,visible 和 hidde ...