REST framework 路由組件

from django.conf.urls import include
from rest_framework.routers import SimpleRouter
router = SimpleRouter()  # SimpleRouter類內部做了{請求:函數}的映射關係
# 所有路由與ViewSet視圖類的都可以註冊,會產生 '^v6/books/$' 和 '^v6/books/(?P<pk>[^/.]+)/$'
router.register('v6/books', views.BookModelViewSet)
​
urlpatterns = [
    # 第一種添加子列表方式
    url(r'^', include(router.urls)),
]
# 第二種添加子列表方式
# urlpatterns.extend(router.urls)

SimpleRouter 源碼:

class SimpleRouter(BaseRouter):
    # 沒有 pk 時做的映射關係
     routes = [
        # List route.
        Route(
            url=r'^{prefix}{trailing_slash}$',  # 沒有pk
            # 映射關係
            mapping={
                'get': 'list',
                'post': 'create'
            },
            name='{basename}-list',
            detail=False,
            initkwargs={'suffix': 'List'}
        ),
    # 有 pk 時做的映射關係
     Route(
            url=r'^{prefix}/{lookup}{trailing_slash}$',  # 有pk
            # 映射關係
            mapping={
                'get': 'retrieve',
                'put': 'update',
                'patch': 'partial_update',
                'delete': 'destroy'
            },
            name='{basename}-detail',
            detail=True,
            initkwargs={'suffix': 'Instance'}
        ),

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章