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. java学习--Reflection反射机制

    JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意方法和属性:这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制. ...

  2. .Net Core全球化多语言

    参照:ASP.NET Core 全球化和本地化 步骤如下: 后台中的本地化. Startup.cs中注册服务并制定Resource文件的位置.注意:这里的位置不仅仅应用到Web层,如Infrastru ...

  3. springMVC实现json

    很多时候前端都需要调用后台服务实现交互功能,常见的数据交换格式多是JSON或XML,这里主要讲解Spring MVC为前端提供JSON格式的数据并实现与前台交互. 一.概要 JSON(JavaScri ...

  4. chrome和IE下的滚动条样式修改

    火狐下的滚动条样式无法去修改,但chorme下的则可以任意修改,惊喜的是IE竟然是最早实现这一功能的浏览器,IE5都能有效果. chorme下的滚动条样式修改: <!DOCTYPE html&g ...

  5. ruby实现下订单后给客户发送手机序列号

    还有半个小时下班,写点今天做的功能,打发打发时间. 两个类,订单类和序列号类. 订单类 class GroupOrder include Mongoid::Document include Mongo ...

  6. Rails 建立一个资源

    在blog 应用程序中.你可以通过脚手架(scaffolded)开始建立一个资源. 这将是单一的blog 提交.请输入以下命令 $ rails generate scaffold Post name: ...

  7. hadoop学习笔记(五):HDFS Shell命令

    一.HDFS文件命令 以下是比较重要的一些命令: [root@master01 hadoop]# hadoop fs -ls / //查看根目录下的所有文件 [root@master01 hadoop ...

  8. C# Mysql Dapper和原生sql 插入和查询速度比较

    1.表中有三个字段,已经有100多万条数据,每次插入10万条数据 时间单位:秒 秒 Dapper批量Model插入时间:40.6165513,Dapper单条Model插入时间:95.9492972, ...

  9. Mybatis源码正确打开方式

    精心挑选要阅读的源码项目: 饮水思源——官方文档,先看文档再看源码: 下载源码,安装到本地,保证能编译运行: 从宏观到微观,从整体到细节: 找到入口,抓主放次,梳理核心流程: 源码调试,找到核心数据结 ...

  10. 在SecureCRT中给linux上传和下载文件

    下载:sz中的s意为send(发送),告诉客户端,我(服务器)要发送文件 send to cilent,就等同于客户端在下载. 上传:rz中的r意为received(接收),告诉客户端,我(服务器)要 ...