12.drf-路由

在之前进行drf开发时,对于路由我们一般进行两种配置:

  • 视图继承APIView
    from django.urls import path
    from app01 import views
    
    urlpatterns = [
        path('api/users/', views.UserView.as_view()),
    ]

     

  • 视图继承 ViewSetMixin(GenericViewSet、ModelViewSet)
    复制代码
    from django.urls import path, re_path, include
    from app01 import views
    
    urlpatterns = [
        path('api/users/', views.UserView.as_view({"get":"list","post":"create"})),
        path('api/users/<int:pk>/', views.UserView.as_view({"get":"retrieve","put":"update","patch":"partial_update","delete":"destory"})),
    ]
    复制代码

     

对于这种形式的路由,drf中提供了更简便的方式

复制代码
from rest_framework import routers
from app01 import views

router = routers.SimpleRouter()
router.register(r'api/users', views.UserView)

urlpatterns = [
    # 其他URL
    # path('xxxx/', xxxx.as_view()),
]

urlpatterns += router.urls
复制代码

也可以利用include,给URL加前缀:

复制代码
from django.urls import path, include
from rest_framework import routers
from app01 import views

router = routers.SimpleRouter()
router.register(r'users', views.UserView)

urlpatterns = [
    path('api/', include((router.urls, 'app_name'), namespace='instance_name')),
    # 其他URL
    # path('forgot-password/', ForgotPasswordFormView.as_view()),
]
复制代码

 

posted @ 2023-02-16 22:37  五仁味儿月饼  阅读(13)  评论(0编辑  收藏  举报