Django-rest-framework(四)router
在上一节viewsets中,我们提到了route的方式使用,在这一节,我们将仔细介绍drf 的router机制。简单来说,router的作用就是将viewset对象的url映射关系提取出来。
简单使用
from rest_framework import routers
router = routers.SimpleRouter()
router.register(r'users', UserViewSet, basename="user")
router.register(r'accounts', AccountViewSet)
# urlpatterns = router.urls
urlpatterns = [
url(r'^api/', include((router.urls, 'app_name'))),
]
register 用两个参数,
prefixroute中url的前缀viewset对应的viewset类basename创建url的名字,默认是viewset的queryset,所以如果viewset类中没用queryset属性,必须设置basename
额外的action
在之前的介绍中,我们知道, viewset里面我们可以通过继承不同的mixins来实现列表,详情,增加,修改,部分修改,删除种不同功能的接口。可是在实际情况中,我们需要的不仅仅是这些,所以,我们需要额外的url来路由。于是引入了action装饰器,我们可以在viewset中添加额外的路由了,使用方法:
from myapp.permissions import IsAdminOrIsSelf
from rest_framework.decorators import action
class UserViewSet(ModelViewSet):
...
@action(methods=['post'], detail=True, permission_classes=[IsAdminOrIsSelf])
def set_password(self, request, pk=None):
Note
在之前旧的版本使用的是detail_route,list_route连个装饰器来添加额外的路由,用来区别url中是否有pk字段。action装饰器则是通过detail字段来区别
使用上面action生成的url是 ^users/{pk}/set_password/$。 如果不想使用方法的名字来做路由,可以在action中指定url_name。
DefaultRouter
前面我们介绍时使用的是SimpleRouter,DefaultRouter与之不同的是,它带了一个api root view,返回了包viewset中包含的所有action的超链接。
官方文档上还介绍了自定义routers的方法,因为暂时还没用到过,所以对这部分不做介绍
Django-rest-framework(四)router的更多相关文章
- Django REST framework+Vue 打造生鲜超市(四)
五.商品列表页 5.1.django的view实现商品列表页 (1)goods/view_base.py 在goods文件夹下面新建view_base.py,为了区分django和django res ...
- Django Rest Framework源码剖析(四)-----API版本
一.简介 在我们给外部提供的API中,可会存在多个版本,不同的版本可能对应的功能不同,所以这时候版本使用就显得尤为重要,django rest framework也为我们提供了多种版本使用方法. 二. ...
- 利用 Django REST framework 编写 RESTful API
利用 Django REST framework 编写 RESTful API Updateat 2015/12/3: 增加 filter 最近在玩 Django,不得不说 rest_framewor ...
- Django REST framework使用ViewSets的自定义路由实现过程
在Django中使用基于类的视图(ClassView),类中所定义的方法名称与Http的请求方法相对应,才能基于路由将请求分发(dispatch)到ClassView中的方法进行处理,而Django ...
- Django REST framework+Vue 打造生鲜超市(一)
一.项目介绍 1.1.掌握的技术 Vue + Django Rest Framework 前后端分离技术 彻底玩转restful api 开发流程 Django Rest Framework 的功能实 ...
- Django REST framework+Vue 打造生鲜超市(五)
六.商品类别数据展示 6.1. 商品类别数据接口 (1)商品分类有两个接口: 一种是全部分类:一级二级三级 一种是某一类的分类以及商品详细信息: 开始写商品分类的接口 (2)序列化 给分类添加三级分类 ...
- Django REST framework+Vue 打造生鲜超市(十二)
十三.首页.商品数量.缓存和限速功能开发 13.1.轮播图接口实现 首先把pycharm环境改成本地的,vue中local_host也改成本地 (1)goods/serializer class B ...
- RESTful架构&简单使用Django rest framework
RESTful架构 1 什么是REST REST全称是Representational State Transfer,中文意思是表述性状态转移. 它首次出现在2000年Roy Fielding的博士论 ...
- python 全栈开发,Day96(Django REST framework 视图,django logging配置,django-debug-toolbar使用指南)
昨日内容回顾 1. Serializer(序列化) 1. ORM对应的query_set和ORM对象转换成JSON格式的数据 1. 在序列化类中定义自定义的字段:SerializerMethodFie ...
- Django Rest Framework源码剖析(八)-----视图与路由
一.简介 django rest framework 给我们带来了很多组件,除了认证.权限.序列化...其中一个重要组件就是视图,一般视图是和路由配合使用,这种方式给我们提供了更灵活的使用方法,对于使 ...
随机推荐
- (一)环境安装之Java
一.安装JDK 点击 JDK8下载,根据自己的平台,选择相应的版本进行下载. Java环境分JDK和JRE ,JDK就是Java Development Kit. 简单的说JDK是面向开发人员使用的S ...
- C#基础(第一天)
Ctrl+K+D:对其代码: #Region #endRegion:折叠多余代码: Ctrl+K+S:可以折叠代码写注释: 语法格式:数据类型 变量名: ...
- C#中三个关键字params,Ref,out
关于这三个关键字之前可以研究一下原本的一些操作 using System; using System.Collections.Generic; using System.Text; namespace ...
- C# ADO.NET面向对象想法
我认为的面向对象就是把各种问题拆分开来 逐一解决, 我想的是先是数据库,到底有什么, 然后新建一个类,类里面先是private的私有的,但是可以有无数个可以连接private的pubilc的属性 可 ...
- ThreadPoolExecutor(上篇)
Java有两个线程池类:ThreadPoolExecutor和ScheduledThreadPoolExecutor,继承AbstractExecutorService类,AbstractExecut ...
- 线程的Interrupt方法与InterruptedException解析
线程阻塞状态与等待状态(当一个线程处于被阻塞或等待状态时,它暂时不活动,不允许任何代码且消耗最少的资源) 当一个线程试图获得一个内部的对象锁(而不是java.util.concurrent库中的锁), ...
- Mybatis generator 逆向生成代码
Mybatis generator 逆向生成代码 简单介绍 本文介绍用mybatis逆向生成javaben dao接口 1.创建maven项目 创建相应的包 附上项目创建完成的图片 然后在pom.xm ...
- 高效的jQuery代码编写技巧
缓存变量 DOM遍历是昂贵的,所以尽量将会重用的元素缓存. // 糟糕 h = $('#element').height(); $(); // 建议 $element = $('#element'); ...
- react里面stateless函数的默认参数
function fn({ children, params, dispatch, location}) { }
- JUnit_BeforeClass不报异常的 bug 处理
1.try{} cathce(Exception e){}将觉得会出问题的地方括起来测试. 2.main方法调用出问题的方法.