对drf视图集的理解】的更多相关文章

视图集ViewSet 使用视图集ViewSet,可以将一系列逻辑相关的动作放到一个类中: list() 提供一组数据 retrieve() 提供单个数据 create() 创建数据 update() 保存数据 destory() 删除数据 ViewSet视图集类不再实现get().post()等方法,而是实现动作 action 如 list() .create() 等. 视图集只在使用as_view()方法的时候,才会将action动作与具体请求方式对应上.如: class BookInfoVi…
在我们用DRF视图集完成了查找全部部门,创建一个新的部门,查找一个部门,修改一个部门,删除一个部门的功能后,views.py的代码是这样子的: class DepartmentViewSet(ModelViewSet): queryset = Department.objects.all() serializer_class = DepartmentSerializer 现在需要新增一个功能,查询最新成立的部门. 这时,我们就需要自定义action方法了. 新增功能后的代码如下: class D…
在使用DRF视图集时,往往需要配一大堆路由,例如: # views.py class DepartmentViewSet(ListModelMixin,CreateModelMixin,RetrieveModelMixin, UpdateModelMixin,DestroyModelMixin,GenericViewSet): queryset = Department.objects.all() serializer_class = DepartmentSerializer # urls.py…
一 视图集与路由的使用 使用视图集ViewSet,可以将一系列逻辑相关的动作放到一个类中: list() 提供一组数据 retrieve() 提供单个数据 create() 创建数据 update() 保存数据 destory() 删除数据 ViewSet视图集类不再实现get().post()等方法,而是实现动作 action 如 list() .create() 等. 视图集只在使用as_view()方法的时候,才会将action动作与具体请求方式对应上. 1.1 常用的视图集父类 1 Vi…
# 原创,转载请留言联系 如果要把同一种http请求方法的多个接口放在同一个视图中,比如:查询多条数据和一条数据都是get请求,放在同一个视图里,应该怎么做呢??? 如果直接放在一起,会怎样呢? # 视图: class DepartmentTestView(ListAPIView, RetrieveAPIView): queryset = Department.objects.all() serializer_class = DepartmentSerializer # 路由: urlpatte…
1.说明:DRF框架中的视图集: 在drf开发接口中,使用GenericAPIView和视图扩展类结合起来完成接口功能是一件很常见的事情,所以,drf的作者帮我们提前把  GenericAPIView和视图扩展类结合子类也声明了出来视图子类中还帮我们定义对应接口的视图方法代码,所以我们无需在视图中重复编写对用的视图方法了.案例代码: view.py from rest_framework.generics import ListAPIView,CreateAPIView # ListAPIVie…
五个扩展类 (1)ListModelMixin 列表视图扩展类,提供list(request, *args, **kwargs)方法快速实现列表视图,返回200状态码. 该Mixin的list方法会对数据进行过滤和分页. 源代码: class ListModelMixin(object): """ List a queryset. """ def list(self, request, *args, **kwargs): # 过滤 queryse…
目录 DRF 视图组件 视图组件大纲 两个视图基本类 五个扩展类 九个子类视图 视图集 常用视图集父类 魔法类 一览表 DRF中视图的"七十二变" 第一层:基于APIview的五个接口 第一层五个接口demo 第二层:基于GenericAPIView的五个接口 常用类属性: 第二层五个接口demo 第三层:基于GenericAPIView+五个视图扩展类写 第三层五个接口demo GenericAPIView速写五个接口demo 第四层:GenericAPIView+九个视图子类写五个…
REST framework 提供了众多的通用视图基类与扩展类,以简化视图的编写. 1.2个视图基类 1.1. APIView rest_framework.views.APIView APIView是REST framework提供的所有视图的基类,继承自Django的View父类. APIView与View的不同之处在于: 传入到视图方法中的是REST framework的Request对象,而不是Django的HttpRequeset对象: 视图方法可以返回REST framework的R…
目录 1.APIView 2.GenericAPIView:通用视图类 3.5个视图扩展类:ListModelMixin,CreateModelMixin,RetrieveModelMixin,UpdateModelMixin,DestroyModelMixin 4.GenericAPIView的视图子类:ListAPIView,CreateAPIView,RetrieveAPIView,UpdateAPIView,DestroyAPIView 5.视图集基类:ViewSet,GenericVi…
想对PickerView进行操作,只能在代码中操作. 下面 ,再添加三个label组件,然后将所有组件配置到代码中(看代码),然后要实现对PickerView的操作,就要实现它的DataSource协议和他的代理,在右边组件的链接栏,Outlets有两个选项,把他们都链接到控制器上: 好,我们的数据从哪里来? 我们在代码的控制器中定义几个数组,并且手工加上协议,然后会提示ViewController没有遵守协议UIPickerViewDataSource,因为我们没有实现: 下面我们就来实现协议…
Django REST framwork 提供的视图的主要作用: 控制序列化器的执行(检验.保存.转换数据) 控制数据库查询的执行 一:请求与响应 1:request Request 1 REST framework 传入视图的request对象不再是Django默认的HttpRequest对象,而是REST framework提供的扩展了HttpRequest类的Request类的对象. 2 REST framework 提供了Parser解析器,在接收到请求后会自动根据Content-Typ…
目录 开始使用内置视图 请结合[DRF序列化]此文献中的数据文件及序列化文件来阅读如下代码. DRF视图为我们提供了非常简便的方法--内置了增删改查等一系列的操作. 我们只需在url中指定对应的方法,视图继承内置方法的类,即可实现两三行代码搞定一个请求. @ * 我们先看看仿照内置方法实现的** APIView视图文件: from rest_framework.views import APIView from rest_framework.response import Response fr…
1.Tutorial 6: ViewSets & Routers 视图集与路由器 0.文档 https://q1mi.github.io/Django-REST-framework-documentation/tutorial/6-viewsets-and-routers_zh/ https://www.django-rest-framework.org/tutorial/6-viewsets-and-routers/ 源码参考 https://github.com/encode/rest-fr…
DRF视图 drf的代码简写除了在数据序列化体现以外,在视图中也是可以的.它在django原有的django.views.View类基础上,drf内部封装了许多子类以便我们使用. Django REST framwork 提供的视图的主要作用: 控制序列化器的执行(检验.保存.转换数据) 控制数据库查询的执行 调用请求类和响应类[这两个类也是由drf帮我们再次扩展了一些功能类. 请求与响应 先创建一个子应用req python manage.py startapp httpdemo Reques…
DRF视图组件: CVB模式继承----五层 from django.views import View # Django的View from rest_framework.views import APIView # drf的APIView继承View from rest_framework.generics import GenericAPIView, CreateAPIView # drf的GenericAPIView继承APIView # 以下CBV需要在路由的as_view()中添加对…
前言 drf视图的源码非常的绕,但是实现的功能却非常的神奇. 它能够帮你快速的解决ORM增删改查的重复代码,非常的方便好用. 下面是它源码中的一句话: class ViewSetMixin: """ This is the magic. """ 好了,屁话不多说,直接看看drf视图中的功能吧. 准备工作 此次的Django采用3版本,所以相对于1版本来说有一些差异. 模型表 下面是模型表: from django.db import models…
目录 视图家族 一.views视图类 1.APIView类 2.GenericAPIView类(generics中) 二.mixins类:视图辅助工具 1.RetrieveModelMixin 2.ListModelMixin 3.CreateModelMixin 4.UpdateModelMixin 5.DestroyModelMixin 三.generics类:包含辅助工具的通用视图类 四.viewsets视图集 1.作用 2.如何使用 3.ModelViewSet的不合理之处及解决方法 路…
前言 ViewSet 只是一种基于类的视图,它不提供任何方法处理程序(如 .get()或.post()),而是提供诸如.list()和 .create() 之类的操作. ViewSet 的方法处理程序仅使用 .as_view() 方法绑定到完成视图的相应操作. 通常不是在urlconf中的视图集中显示注册视图,而是要使用路由类注册视图集,该类会自动为你确定 urlconf. 源码分析 我们首先看一下viewsets.py文件的源码结构,如下图 我们可以看到有5个类 ViewSetMixin Vi…
视图说明 1. 两个基类 1)APIView rest_framework.views.APIView APIView是REST framework提供的所有视图的基类,继承自Django的View父类. APIView与View的不同之处在于: 传入到视图方法中的是REST framework的Request对象,而不是Django的HttpRequeset对象: 视图方法可以返回REST framework的Response对象,视图会为响应数据设置(render)符合前端要求的格式: 任何…
1. 两个基类 1)APIView Django REST_framework 中所有视图的基类是APIView   父类是View 支持定义的属性: authentication_classes 列表或元祖,身份认证类 permissoin_classes 列表或元祖,权限检查类 throttle_classes 列表或元祖,流量控制类 在APIView中仍以常规的类视图定义方法来实现get() .post() 或者其他请求方式的方法. 举例: from rest_framework.view…
本帖最后由 杰哥,我就服你 于 2018-12-20 13:22 编辑 Django rest framework(DRF) D:是一个用于构建Web API强大又灵活的框架,基于Django框架二次开发的 E: ①提供定义序列化器Serializer的方法,可根据ORM或其他自动序列化或反序列化 ②提供丰富的类视图,Mixin扩展类,视图集,简化视图编写 ③丰富的定制层级:自动生成API ④身份认证,权限认证,限流系统 ⑤直观的API web界面 ⑥可扩展性,插件丰富 U: ①需Python和…
一 关于视图类的一下概念 drf除了在数据序列化部分简写代码以外,还在视图中提供了简写操作.所以在django原有的django.views.View类基础上,drf封装了多个子类出来提供给我们使用. Django REST framwork 提供的视图的主要作用: 控制序列化器的执行(检验.保存.转换数据) 控制数据库查询的执行 调用请求类和响应类(这两个类也是由drf帮我们再次扩展了一些功能类). 请求与响应 1.1 Request请求 REST framework 传入视图的request…
软件架构理解 1FastDFS介绍 1.1什么是FastDFS FastDFS是用c语言编写的一款开源的分布式文件系统.FastDFS为互联网量身定制,充分考虑了冗余备份.负载均衡.线性扩容等机制,并注重高可用.高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传.下载等服务. FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储.文件同步.文件访问(文件上传.文件下载)等,解决了大容量存储和负载均衡的问题.特别适合以文件为载体的在线服…
一.restfull规范的简单介绍 1.介绍 REST:表述性状态转移,是一种web交互方案 资源:在web中只要有被引用的必要都是资源 URI: URI 统一资源标识符 URL 统一资源定位符 统一资源接口 根据HTTP请求方式的不同对资源进行不同的操作 遵循HTTP请求方式的语义 前后端传输的叫资源的表述 前端展现的叫资源的状态 通过超链接的指引告诉用户接下来有哪些资源状态可以进入 2.restfull规范 核心思想 -- 面向资源去编程 每个url就是资源的体现 尽量用名词不要用动词 --…
视图组件 1.基本视图 url(r'^publish/$', views.PublishView.as_view()), url(r'^publish/(?P<pk>\d+)/$', views.PublishDetailView.as_view()), class PublishSerializers(serializers.ModelSerializer): class Meta: model=models.Publish fields='__all__' class PublishVie…
Django Rest Feamework 视图和路由 DRF的视图 APIView 我们django中写CBV的时候继承的是View,rest_framework继承的是APIView,那么他们两个有什么不同呢 urlpatterns = [ url(r'^book$', BookView.as_view()), url(r'^book/(?P<id>\d+)$', BookEditView.as_view()), ] 我们可以看到,不管是View还是APIView最开始调用的都是as_vi…
一.创建项目 1.创建 项目 : django-admin startprojet drf 2. 创建 两个app   ------ app1 ,book python manage.py startapp app1 python manage.py startapp book 3. settings 配置  ,一定不能少了 rest_framework 这个app的注册. INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.au…
视图组件  -- 第一次封装   -- GenericAPIView(APIView):    queryset = None    serializer_class = None    def get_queryset(self):     return self.queryset.all()    def get_serializer(self, *args, **kwargs):     return self.serializer_class(*args, **kwargs)   --…
DRF中的Request 在Django REST Framework中内置的Request类扩展了Django中的Request类,实现了很多方便的功能--如请求数据解析和认证等. 比如,区别于Django中的request从request.GET中获取URL参数,从request.POST中取某些情况下的POST数据. 在APIView中封装的request,就实现了请求数据的解析: 一般来说,GET请求的参数,通过request.query_params来获取.POST.PUT通过requ…