Django之restframework中路由Routers
对于视图集ViewSet,我们除了可以自己手动指明请求方式与动作action之间的对应关系外,还可以使用Routers来帮助我们快速实现路由信息。
REST framework提供了两个router
SimpleRouter
DefaultRouter
1. 使用方法
1) 创建router对象,并注册视图集,例如
from rest_framework import routersrouter = routers.SimpleRouter()
router.register(r'books', BookInfoViewSet, base_name='book')
register(prefix, viewset, base_name)
- prefix 该视图集的路由前缀
- viewset 视图集
- base_name 路由名称的前缀
如上述代码会形成的路由如下:
^books/$ name: book-list
^books/{pk}/$ name: book-detail
2)添加路由数据
可以有两种方式:
urlpatterns = [...
]
urlpatterns += router.urls
或
urlpatterns = [...url(r'^', include(router.urls))
]
2. 视图集中附加action的声明
在视图集中,如果想要让Router自动帮助我们为自定义的动作生成路由信息,需要使用rest_framework.decorators.action装饰器。
以action装饰器装饰的方法名会作为action动作名,与list、retrieve等同。
action装饰器可以接收两个参数:
- methods: 声明该action对应的请求方式,列表传递
- detail: 声明该action的路径是否与单一资源对应,及是否是xxx//action方法名/
------True 表示路径格式是xxx//action方法名/
----- False 表示路径格式是xxx/action方法名/
举例:
from rest_framework import mixins
from rest_framework.viewsets import GenericViewSet
from rest_framework.decorators import actionclass BookInfoViewSet(mixins.ListModelMixin, mixins.RetrieveModelMixin, GenericViewSet):queryset = BookInfo.objects.all()serializer_class = BookInfoSerializer# detail为False 表示路径名格式应该为 books/latest/@action(methods=['get'], detail=False)def latest(self, request):"""返回最新的图书信息"""...# detail为True,表示路径名格式应该为 books/{pk}/read/@action(methods=['put'], detail=True)def read(self, request, pk):"""修改图书的阅读量数据"""...
由路由器自动为此视图集自定义action方法形成的路由会是如下内容:
^books/latest/$ name: book-latest
^books/{pk}/read/$ name: book-read
3. 路由router形成URL的方式
1) SimpleRouter
2)DefaultRouter
DefaultRouter与SimpleRouter的区别是,DefaultRouter会多附带一个默认的API根视图,返回一个包含所有列表视图的超链接响应数据。
Django之restframework中路由Routers相关推荐
- Django之restframework的路由Routers
对于视图集ViewSet,我们除了可以自己手动指明请求方式与动作action之间的对应关系外,还可以使用Routers来帮助我们快速实现路由信息. REST framework提供了两个router ...
- 对Django Web开发中路由(ulr)配置 '^static/(?Plt;pathgt;.*)' 的理解
在Django静态文件管理中,开发过程中需要启用静态文件服务,在settings.py文件的INSTALLED_APPS中,启用静态文件管理模块'django.contrib.staticfiles' ...
- Django REST framework(十)路由集routers的使用
Django REST framework(九)-视图集ViewSet.GenericViewSet.ModelViewSet.ReadOnlyModelViewSet_simpleyako的博客-C ...
- python Django Rest_Framework框架 视图集与路由Routers详解(图文并茂版)
视图集与路由Routers详解 视图集 ViewSet视图集 代码实现 GenericViewSet视图集 代码实现 ModelViewSet视图集 ReadOnlyModelViewSet视图集 路 ...
- Django项目test中的mock概述
Django项目test中的mock概述 本文环境python3.5.2 test中的mock实现 接口示例代码如下: ...# 路由配置('^api/business_application/?$' ...
- Django(二) 路由和视图
路由定义 路由是客户端访问的url路径与视图函数间的一一映射关系.Django中的路由关系在urls.py文件中,基本格式如下: urlpatterns = [url(regex,view, kwar ...
- 7. django应用及分布式路由
Django应用及分布式路由 应用详解 什么应用 应用在django项目中是一个独立的业务模块,可以包含自己的路由,视图,模板,模型. 例如网站可以分为 金融.体育.娱乐.政治等, 这些就是应用,说白 ...
- DRF 框架总结 - 视图集路由 Routers
视图集 ViewSet 使用视图集 ViewSet,可以将一系列逻辑相关的动作放到一个类中: list() 提供一组数据 retrieve() 提供单个数据 create() 创建数据 update( ...
- Django(5)-路由配置实例
Django(1)-简介 Django(2)-创建项目及默认项目目录结构介绍 Django(3)-配置文件详解 Django(4)-URL和视图 Django(5)-路由配置实例 Django(6)- ...
最新文章
- Linux系统目录结构,文件类型以及ls、alias命令
- VC6.0 控件Radio Button的使用
- 3级软件测试试题,软件测试人员(.NET)_3级_操作技能鉴定1.1.3试题单(26页)-原创力文档...
- display:inline display:block
- Java笔记11-【异常、线程】
- 更改 SQL Server 2000 端口号
- mysql-优化班学习-8-20170606-MySQL索引
- UI设计灵感|如何简易花繁多的数据?功能仪表盘界面设计来看
- mysql4函数_MySQL-4.常见函数
- leetcode 20. 有效的括号 (python)
- Decide what you want,and go after it with everything you got!
- 智能硬件设计开发流程
- 如何用3D Max进行三维建模
- 腾讯信鸽推送(一):服务端架构
- 英尺英寸和厘米的换算_英尺米换算(英尺英寸与厘米换算器)
- Camera+收入超500万美金,VPlayer能否击败其神话?
- VS2017设置透明主题
- 普适计算Topic推荐-AMiner
- win10无法访问linux共享服务器,Win10无法访问NAS或Linux网络共享的处理方法
- 某宝2020最新登录加密算法和滑小鸡算法
热门文章
- 脉冲响应不变法C语言程序,脉冲响应不变法-数字信号处理总结.ppt
- 乐学习知选择--我的J2EE技术历程
- 【TypeError: Descriptors cannot not be created directly. 】解决方法
- 完善circos做图
- Echart 仪表盘 样式调整
- 【科学文献计量】networkx绘制网络图的基本属性,图形读写以及无向/有向图形绘制详解
- 神州租车还有这些新玩法?打造了行业新标杆
- PHP版本更新功能实现,技术分享:最低PHP版本更新操作 | Wopus
- 仿泡团影视网源码 苹果cmsV8版本 电脑端+影视模块
- element-plus ui表格表头筛选功能