Django REST framework:路由Routers

路由Routers

对于视图集ViewSet,我们除了可以自己手动指明请求方式与动作action之间的对应关系外,还可以使用Routers来帮助我们快速实现路由信息

REST framework提供了两个router

  • SimpleRouter
  • DefaultRouter

1. 使用方法

1) 创建router对象,并注册视图集,例如

复制代码

from rest_framework.routers import DefaultRouter
from . import views
from django.urls import path, re_path, include
from .views import UserModelViewSet

# 可以处理视图的路由器
router = DefaultRouter()
# 向路由器中注册视图集
router.register(prefix='user', viewset=UserModelViewSet, basename='user')

urlpatterns = [
path('test/', views.UserAPIView.as_view()),
] + router.urls
 
复制代码

参数说明:

  • prefix 该视图集的路由前缀
  • viewset 视图集
  • base_name 路由名称的前缀

如上述代码会形成的路由如下:

/user/
/user/pk/

备注:

url是上面路由器中注册的prefix参数自定义的,一般是和应用名称一致

2)添加路由数据

有两种方式:

urlpatterns = [
 

...
 
]
 
urlpatterns += router.urls

urlpatterns = [
 
...
 
url(r'^', include(router.urls))
 
]

2. 视图集中包含附加action的

复制代码
class BookInfoViewSet(mixins.ListModelMixin, mixins.RetrieveModelMixin, GenericViewSet):
 
 
queryset = BookInfo.objects.all()
 
serializer_class = BookInfoSerializer
 
@action(methods=['get'], detail=False)
 
 
def latest(self, request):
 
 
...
 
 
@action(methods=['put'], detail=True)
 
 
def read(self, request, pk):
 
 
...
复制代码

3. 路由router形成URL的方式

1) SimpleRouter

2)DefaultRouter

DefaultRouter与SimpleRouter的区别是,DefaultRouter会多附带一个默认的API根视图,返回一个包含所有列表视图的超链接响应数据

 

posted @   未来可期_Durant  阅读(191)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示