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

DRF中DefaultRouter和SimpleRouter区别_第1张图片

使用SimpleRouter

DRF中DefaultRouter和SimpleRouter区别_第2张图片

相比较DefaultRouter,SimpleRouter少了很多URLPAttern

你可能感兴趣的:(pythondjango)