乐趣区

关于python:DRF中DefaultRouter和SimpleRouter区别

路由注册

DRF 的视图被称为 ViewSet,而不是 Django 中的 View

传统的 Django 注册路由是通过 FBV 或者 CBV 形式。

from django.urls import include, path
from appname import views

urlpatterns = [path('',views.funcname),
    path('/login',views.Classname.as_view()),
]

然而 DRF 编写的 ViewSet 不是间接写在 urlpatterns 中,而是通过 router 注册的模式

from django.urls import include, path
from rest_framework import routers
from apps.accounts.api import views

routers.SimpleRouter

router = routers.SimpleRouter()
router.register(r'api/users', views.UserViewSet)
router.register(r'api/accounts', views.AccountViewSet, basename='accounts')

urlpatterns = [path('', include(router.urls)),
]

先申明一个 Router 类的实例,而后再这个 router 中调用 register 形式注册 api

讲完了 DRF 的 api 注册形式,就能够来讲讲 DefaultRouter 和 SimpleRouter 区别.

除了手动注册的路由之外还会增加默认的 / 门路,还有一个 format 的问题。

应用 DefaultRouter

应用 SimpleRouter

相比拟 DefaultRouter,SimpleRouter 少了很多 URLPAttern

退出移动版