Django自學筆記 2-1 URL與View關係

————總目錄——前言——框架版本————

======================= 大爽歌作,made by big shuang =======================

一 URL與View關係

參考:https://docs.djangoproject.com/en/2.2/topics/http/urls/#how-django-processes-a-request

1- Django處理請求(request)過程

簡單概括如下:

  1. 根據ROOT_URLCONF(位於setting.py)選擇對應的url解析模塊(默認是urls.py
  2. 加載上一步找到的url解析模塊(默認是urls.py)查找變量urlpatterns
  3. 按順序遍歷urlpatterns裏面的urlpattern,返回第一個匹配requested URL的urlpattern
  4. 上一步匹配成功,Django就會導入並調用urlpattern裏面對應的視圖view(一般在views.py裏面)
  5. 第三步沒有找到匹配的,或者尋找的過程中有異常拋出,Django會調用適當的錯誤處理視圖(見error-handling

上面步驟的一些細節補充

  1. urlpattern: 變量urlpatterns裏面的元素,稱作urlpattern,urlpattern必須爲django.urls.path()實例或django.urls.re_path()實例,例如
urlpatterns = [
    path('articles/2003/', views.special_case_2003),
    re_path(r'^articles/(?P<year>[0-9]{4})/$', views.year_archive),
    re_path(r'^articles/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/$', views.month_archive),
    ......
]
  1. 有一些老的教程資源裏面urlpattern寫成url('articles/2003/', views.special_case_2003)[在開頭會from django.conf.urls import url],
    這種寫法不推薦使用,django.conf.urls.url()django.urls.re_path()的別名。在將來的版本中,它可能會被棄用.(出自https://docs.djangoproject.com/en/2.2/ref/urls/#url)
  2. 視圖view,可以看做一個簡單的Python函數,這個方法會根據一個 HttpRequest實例(對應輸入參數request),返回一個HttpResponse實例。
    request爲視圖view一定要有的參數,根據需要,urlpattern也有可能給視圖view添加其他輸入參數。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章