DRF中的路由Router使用
对于视图集ViewSet,我们除了可以自己手动指明请求方式与动作action之间的对应关系外,还可以使用Routers来帮助我们快速实现路由列表信息。
REST framework提供了两个router
- SimpleRouter
- DefaultRouter
1.使用方法
1) 创建router对象
router = DefaultRouter()
2) 注册视图集,注册语法为
router.register(prefix, viewset,basename)
- prefix 该视图集的路由前缀(路由,列表视图和详情视图公有的部分,不含斜杠)
- viewset 视图集
- basename路由名称的前缀(给路由起名,可不写,前后端不分离用的多)
如上述代码会形成的路由如下:
^books/$ name: book-list
^books/{pk}/$ name: book-detail
3)添加路由数据
可以有两种方式:
urlpatterns = [
...
]
urlpatterns += router.urls # 追加路由
或者:
urlpatterns = [
...
url(r'^', include(router.urls))
]
2.路由router形成URL的方式
1) SimpleRouter
2)DefaultRouter
DefaultRouter与SimpleRouter的区别是,DefaultRouter会多附带一个默认的API根视图,返回一个包含所有列表视图的超链接响应数据。
SimpleRouter和DefaultRouter的共同点是,都可以帮助我们生成详情视图路由和列表视图路由。不同点是,DefaultRouter,url显示,以超链接形式显示。而 SimpleRouter的url不显示,报404