首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

DRF终极封装ViewSet和Router附教程PDF源码

在DRF官方教程学习过程中,一个很明显感受是框架在不断地进行封装,我们自己写框架/工具/脚本/平台也可以模仿模仿,先完成底层代码,再做多层封装,让使用者很容易就上手操作。...可以把它们合成一个视图。 set是集合意思,ViewSets就是视图集合。...,默认为GET请求,如果想改为POST请求,可以添加参数methods,它源码如下: def action(methods=None, detail=None, url_path=None, url_name...Routers 使用ViewSet一大好处是可以自动配置路由,DRF提供了rest_framework.routers: ?...我们重新编写snippets/urls.py看看是什么效果: from django.urls import path, include from rest_framework.routers import

82820
您找到你想要的搜索结果了吗?
是的
没有找到

Rest_framework Route

ViewSet注册到Router中,需要三个要素: 关于路由规则,细分有四类: rest_framework.routers.SimpleRouter源码解析 SimpleRouter继承和方法一览...SimpleRouter类源码 总结 Rest_framework Router 路由器 虽说django rest_framework是基于django,url路由到视图主要还是利用django...dispatcher路由系统(可以参考我另一篇关于django url dispatcher详解),但是rest_framework还在django路由基础上,提供了基于restful风格更高等级路由方式...关于路由规则,细分有四类: 一条路由规则就是一个Route对象,实例Route对象参数不同,划分了四类(DynamicRoute也算类Route类): 一般detail,提供(retrieve,update...将每条url抽象为一个Route对象,将自定义抽象为动态Route对象(最终还是会根据@action定义内容,将动态Route转换为Route对象),最后根据注册到路由器路由规则,生成url。

1.1K10

五、商品列表页

5.1.djangoview实现商品列表页 (1)goods/view_base.py 在goods文件夹下面新建view_base.py,为了区分djangodjango rest framework...数据 5.2.djangoserializer序列化model (1)model_to_dict 当字段比较多时,一个字段一个字段提取很麻烦,可以用model_to_dict,将model整个转化为...,images保存一个相对路径,我们还需要补全路径,而这些drf都可以帮助我们做到 以上写了这么多只是为了引入django rest framework和简单介绍django序列化用法,下面就是重点讲解...还有其它几个mixin(增删改查局部),这些功能都是mixin做  我们一般都是用viewsets ViewSet类与View类其实几乎是相同,但提供是read或update这些操作,而不是get...同时,ViewSet为我们提供了默认URL结构, 使得我们能更专注于API本身。  Router提供了一种简单,快速,集成方式来定义一系列urls

4.7K00

Django REST framework+Vue 打造生鲜超市(四)

五、商品列表页 5.1.djangoview实现商品列表页 (1)goods/view_base.py 在goods文件夹下面新建view_base.py,为了区分djangodjango rest...5.2.djangoserializer序列化model (1)model_to_dict 当字段比较多时,一个字段一个字段提取很麻烦,可以用model_to_dict,将model整个转化为dict...djangoserializer虽然可以很简单实现序列化,但是有几个缺点 字段序列化定死,要想重组的话非常麻烦 从上面截图可以看出来,images保存一个相对路径,我们还需要补全路径,而这些drf...都可以帮助我们做到 以上写了这么多只是为了引入django rest framework和简单介绍django序列化用法,下面就是重点讲解django rest framework了 5.3.APIview...同时,ViewSet为我们提供了默认URL结构, 使得我们能更专注于API本身。  Router提供了一种简单,快速,集成方式来定义一系列urls

4.8K90

Django_rest框架实践项目(一)入门helloWord项目的创建和代码解释

,并且连接数据库,现在是连接mysql数据库,将app映射到数据库里面 不需要将这个新创建app注册到setting里面,这个和django项目不一样,但是要注册rest_framework’,...里面的内容为 from django.contrib.auth.models import User, Group # 在虚拟环境下要安装rest_framework这个框架 from rest_framework...(r'users', views.UserViewSet) 在这个路由对象里面进行注册,第二个参数是view里面的类 router.register(r'groups...')), ] 记住: 必须在url里面创建router对象并且引用之后,才会出现rest框架页面,因为这个对象是rest框架里面的类创建对象 from rest_framework import...routers 导入框架路由模块 不然页面还是django页面。

1.2K20

Django进阶:DRF(Django REST framework)

DRF即Django REST framework缩写,官网上说:Django REST framework是一个强大而灵活工具包,用于构建Web API。...在Django中,我们通过model-view-template实现了后端和前端通信。但前端未必是用Djangotemplate实现,也可以用单独前端框架(如vue)实现。...“Django REST 框架”这个名字是在 2011 年初决定,选择它只是为了确保开发人员很容易找到这个项目。在整个文档中,我们尝试使用更简单、技术上正确术语“Web API”。...官网一个例子 看一个官网例子来感受一下。创建一个简单API,允许管理员查看和编辑系统中用户和组。...', namespace='rest_framework')) ] 因为我们使用ViewSet而不是view,所以我们可以通过简单地将ViewSet注册到Router来自动生成API URL conf

47020

3. DRF进阶之DRF视图和常用功能

DRF视图和常用功能 DRF视图 DRF视图类介绍 在DRF框架中提供了众多通用视图基类与扩展类,以简化视图编写。...GenericAPIView:对APIView更高层次封装,例如增加分页、过滤器 GenericViewSet:继承GenericAPIView和ViewSet ViewSet:继承APIView...常用属性: request.data:返回POST提交数据,与request.POST类似 request.query_params:返回GET URL参数,与request.GET类似 浏览器get...,删除,查看 ViewSet类 GenericAPIView已经完成了许多功能,但会有一个问题,获取所有用户列表和单个用户需要分别定义两个视图和URL路由,使用ViewSet可以很好解决这个问题,并且实现了路由自动映射...Swagger来了,它是一个应用广泛REST API文档自动生成工具,生成文档可供前端人员查看。

4.3K10

django rest framework通用view

官方文档:http://www.django-rest-framework.org/ drf为我们提供强大通用view功能,本博客对这些view进行简要总结分析。...1. django View   首先,我们使用django自带view,获取一个课程列表: # drf是通过json格式进行数据交互,所以这里也返回json数据 import json from...route方法注册与绑定 from rest_framework.routers import DefaultRouter router = DefaultRouter() # 只需要实现一次 router.register...# 只需要 url(r'^', include(router.urls)),] route中使用一定要是ViewSet,用router.register方法注册url不仅可以很好管理url...在viewset中,还提供了两个以及与mixins绑定好ViewSet,当然,这两个ViewSet完全可以自己实现: class ReadOnlyModelViewSet(mixins.RetrieveModelMixin

1K20

RESTful源码笔记之RESTful FrameworkAPIview, Viewset总结分析

0x00  引言 官方文档:http://www.django-rest-framework.org/ drf为我们提供强大通用view功能,本博客对这些view进行简要总结分析。...0x01 django View 首先,我们使用django自带view,获取一个课程列表: # drf是通过json格式进行数据交互,所以这里也返回json数据 import json from...route方法注册与绑定 from rest_framework.routers import DefaultRouter router = DefaultRouter() # 只需要实现一次 router.register...# 只需要加入一次 url(r'^', include(router.urls)),] route中使用一定要是ViewSet,用router.register方法注册url不仅可以很好管理...在viewset中,还提供了两个以及与mixins绑定好ViewSet,当然,这两个ViewSet完全可以自己实现: class ReadOnlyModelViewSet(mixins.RetrieveModelMixin

1K10

Django+Vue开发生鲜电商平台之1.项目介绍

------马云 本项目旨在使用Django、Vue和REST Framework等技术开发一个前后端分离生鲜电商平台。...xadmin后台管理系统 二、项目技术要点 项目的技术重点是Django REST Framework,这是一个专注于Restful API开发框架,最终熟悉Restful API开发流程,主要技术要点为...: 通用view实现rest api接口 ApiView方式实现api GenericView方式实现api接口 Viewset和router方式实现api接口和url配置 django_filter...; django rest framework文档自动化管理以及url注册管理功能会让我们省去写文档时间; django rest framework文档管理功能不仅可以让我们省去写文档时间还能直接在文档里面测试接口...、自动生成js接口代码、shell测试代码和python测试代码; django rest framework提供throttle来对api进行访问频率限制; 引入第三方框架来设置某些api缓存。

2.5K31

Django REST framework 来实现一次性验证码(OTP)

今天讲一下如何用 Django REST framework[1](DRF) 来实现 OTP,阅读本文需要一定 DRF 基础知识。...REST framework 框架 Serializer 可以对 Models 里一个字段进行验证,我们直接在里面做填空题即可: # serializers.py class VerifyCodeSerializer...,借助于 Django REST framework 框架 GenericViewSet 和 CreateModelMixin 即可实现 view 类,代码都有详细注释,你很容易就看明白: from...这其实需要了解 DRF ModelSerializer 类和 ViewSet 类之前关系,在调用关系上,ViewSet 类调用 ModelSerializer 来实现字段验证和数据保存及序列化,...参考资料 [1] Django REST framework: https://www.django-rest-framework.org

1.7K20

让 DRF Views 支持依赖注入

起因 DjangoDjango REST framework 是 Python 开发者常用框架组合,通常来说,一个典型 DRF 式 API 可能长这个样子: from rest_framework.generics...,仅仅为了依赖注入而切换框架显得有些小题大做。...所以,如果能在 Django & DRF 中实现类似依赖注入功能,会较大程度提高 views 可读性并降低 TDD 门槛,间接提高代码质量。...同时我们需要满足几个条件: 能够兼容当前 ViewSet 类 能够复用 Serializer (可选)能够复用 drf-yasg 综上,我写了一个 简单文件 ,你可以将它 Copy 到你 DRF...项目中就可以改造原来 ViewSet (当前需求是比较简单,封装成 SDK 然后安装依赖成本反而高于直接复制粘贴,这样大家可以一起偷懒) 最后效果: 原来 ViewSet (包含 drf-yasg

37850
领券