zoukankan      html  css  js  c++  java
  • DRF视图集的路由设置

    在使用DRF视图集时,往往需要配一大堆路由,例如:

    # views.py
    class DepartmentViewSet(ListModelMixin,CreateModelMixin,RetrieveModelMixin,
                            UpdateModelMixin,DestroyModelMixin,GenericViewSet):
    
        queryset = Department.objects.all()
        serializer_class = DepartmentSerializer
    
    
    # urls.py
    urlpatterns = [
        url(r'^departments$',views.DepartmentViewSet.as_view({'get':'list','post':'create'})),
        url(r'^departments/(?P<pk>d+)$',views.DepartmentViewSet.as_view({
            'get':'retrieve','put':'update','delete':'destroy'
        }))
    ]

    实在是太麻烦了。

    幸好DRF提供了两个router可以很方便地设置路由:

    • SimpleRouter
    • DefaultRouter

    这两个router的使用方法都是一样的,只不过DefaultRouter多点功能,例如可以访问(url+.json)取得返回的JSON数据,访问首页也可以知道有多少个类视图......

    • 使用方法

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

    from rest_framework import routers
    from user.views import DepartmentViewSet
    
    router = routers.SimpleRouter()
    router.register(r'department',DepartmentViewSet,base_name='dep')

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

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

    2.添加路由数据

    可以有两种方式:

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

    或者 ​

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

    3.验证

    打印一下urlpatterns,会发现自动生成了~

    [<RegexURLPattern dep-list ^department/$>,
    <RegexURLPattern dep-detail ^department/(?P<pk>[^/.]+)/$>]
  • 相关阅读:
    Mysql 权限命令整理大全
    阿里云ECS发送邮件失败
    彻底删除Kafka中的topic
    mysql Slave 启动失败
    mysql双主热备
    mysql 主从笔记
    mysql主从同步的键值冲突问题的解决方法
    python0.2----如何在windows下搭建最简洁的python环境
    内存0.1---内存里数据的表示形式以及进制转换
    python0.1-----pyhon的优缺点,为何学习python
  • 原文地址:https://www.cnblogs.com/chichung/p/9942451.html
Copyright © 2011-2022 走看看