第二章、url 注冊

導讀

我們知道http 服務是在接收到 http 報文時,有 server 端程序解析 http 報文,通過 http 報文的 uri 來決定該由哪個視圖處理。
那么在django 的基礎上,對于要弄清楚REST framework 的流程來講,弄清楚 framework 的入口函數(shù),至關重要

url route注冊

在講REST framework 的 route之前,我們先復習一下 django 是如何注冊 url 的。

django工程在 settings.py 中定義了 ROOT_URLCONF 變量,該變量能指導框架通過哪個 URL配置來對訪問的uri進行匹配,從而找到能夠匹配 uri 的視圖進行處理。

from django.conf.urls import url
from . import views

urlpatterns = [
    url(r'^articles/2003/$', views.special_case_2003),
    url(r'^articles/([0-9]{4})/$', views.year_archive),
    url(r'^articles/([0-9]{4})/([0-9]{2})/$', views.month_archive),
    url(r'^articles/([0-9]{4})/([0-9]{2})/([0-9]+)/$', views.article_detail),
]

從 django 的 url 處理樣例中,就能看出,關鍵點是 urlpatterns。

Routers

我們先看一個例子:

from rest_framework import routers

router = routers.SimpleRouter()
router.register(r'users', UserViewSet)
router.register(r'accounts', AccountViewSet)
urlpatterns = router.urls

上面代碼是 RESST framework 中 url 的樣例寫法,我們從中能夠看到,REST framework 增加了 routers 的模塊,并且定義了不同的 Router,本例中,使用的是 SimpleRouter.
而在 SimpleRouter 的對象注冊 url 后,會將 router.urls 賦值給 urlpatterns。
而 urlpatterns 是 django 中處理的,這是 django 與 REST framework 的第一個交匯點。

我們已經(jīng)知道,django框架在處理請求時,通過 uri 識別后,能找到views 下的一個處理函數(shù)。
而REST framework 注冊時,是注冊的 ViewSet 類,那么必然,中間有一個由 ViewSet 類轉換成 view 函數(shù)的過程,這個過程,我們來參考一下 router 解析

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容