Django REST framework中的路由Router使用详解

需积分: 50 0 下载量 36 浏览量 更新于2024-08-17 收藏 14.19MB PPT 举报
"该资源是一份关于Python中的路由Router在RESTful API开发中的应用课程,主要涉及Django REST framework中的两种路由器:SimpleRouter和DefaultRouter。课程内容包括如何使用路由器注册视图集,以及如何在视图集中定义附加动作。" 在Python的Web开发中,特别是构建RESTful API时,路由扮演着至关重要的角色。Django REST framework提供了一套强大的工具,使得路由配置变得更加简洁高效。本课程重点关注的是`SimpleRouter`和`DefaultRouter`这两种路由器的使用方法。 首先,`SimpleRouter`是REST framework中最基础的路由器,它能够自动为视图集创建基本的HTTP方法映射,比如GET、POST、PUT、DELETE等。通过创建`SimpleRouter`实例并注册视图集,可以快速生成路由规则。例如,注册一个名为`BookViewSet`的视图集,只需要一行代码: ```python router = routers.SimpleRouter() router.register(r'books', BookViewSet, base_name='book') ``` 这将自动生成如下路由: - `^books/$`:对应列表视图,name为`book-list` - `^books/{pk}/$`:对应详情视图,name为`book-detail` 除了基本的路由,`SimpleRouter`还支持在视图集中定义附加动作。这些动作可以通过装饰器`@action`来声明,比如添加一个用于设置书籍名称的方法: ```python @action(methods=['post'], detail=True) def set_bookname(self, request, pk=None): ... ``` 这个`set_bookname`动作会在`^books/{pk}/set_bookname/$`路径下生效,name为`books-set-bookname`。 对于不关联实例的附加动作,如对整个书籍列表操作的`order_comment`,可以通过`@action(detail=False)`定义,对应的路由为`^books/order_comment/$`,name为`books-order-comment`。 除了`SimpleRouter`,还有`DefaultRouter`,它的功能更为全面。`DefaultRouter`在`SimpleRouter`的基础上增加了默认的API根视图。这个根视图返回一个包含所有列表视图的超链接响应,有助于客户端发现API的结构。使用`DefaultRouter`的方式和`SimpleRouter`类似,只是实例化时直接使用`DefaultRouter`类。 总结来说,本课程涵盖了Python RESTful API开发中路由的基本使用,包括视图集注册、附加动作的定义,以及两种路由器的差异。学习这些内容可以帮助开发者更高效地构建和管理Django RESTful API,提升开发效率和API的可维护性。