美文网首页
12、Rest Framework视图集的路由设置

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

作者: 小啊小狼 | 来源:发表于2020-09-22 10:07 被阅读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

    • SimpleRouter
    • DefaultRouter

    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)方法说明:

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

    2.添加路由数据

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

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

    相关文章

      网友评论

          本文标题:12、Rest Framework视图集的路由设置

          本文链接:https://www.haomeiwen.com/subject/tkavyktx.html