12、Rest Framework视图集的路由设置

2020-09-22  本文已影响0人  小啊小狼

问题

在使用DRF视图集时,往往需要配一大堆路由,实在是太麻烦了。例如:

# urls.py
urlpatterns = [
    path('projects/', views.ProjectsViewSet.as_view({
        'get': 'list',
        'post': 'create'
    })),
    path('projects/names/', views.ProjectsViewSet.as_view({
        'get': 'names'
    })),
    path('projects/<int:pk>/', views.ProjectsViewSet.as_view({
        'get': 'retrieve',
        'put': 'update',
        'delete': 'destroy'
    })),
    path('projects/<int:pk>/interfaces/', views.ProjectsViewSet.as_view({
        'get': 'interfaces'
    })),
]

解决方式

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

REST framework提供了两个router

Routers路由使用方法

1.创建router对象,并注册视图集。

from rest_framework.routers import DefaultRouter, SimpleRouter
from projects import views

# 定义路由对象
# router = SimpleRouter()
router = DefaultRouter()
# 使用路由对象.register()方法,来进行注册
router.register(r'projects', views.ProjectsViewSet)

register(prefix, viewset, base_name)方法说明:

2.添加路由数据

urlpatterns = [
   ...
]
urlpatterns += router.urls

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

上一篇 下一篇

猜你喜欢

热点阅读