- Django從配置檔案中根據
找到主路由檔案,也就是我們的主目錄下的ROOT_URLCONF
urls.py
- Django找到
中的urls.py
變量,該内容是一個包含多個路由的數組.urlpatterns
from django.contrib import admin
from django.urls import path
from . import views
# 項目的主路由配置-HTTP進入請求Django後,優先調用urls
urlpatterns = [
path('admin/', admin.site.urls),
path('apps/django/',views.apps_dijango),
]
複制
- 依次比對
中的urlpatternes
path
- 比對成功-調用對應函數視圖
- 比對失敗-傳回404
視圖函數
視圖函數是一個用來接收浏覽器請求(HttpRequest)對象并通過
HttpRequest
對象傳回響應函數。此函數可以接收浏覽器請求并根據業務邏輯傳回相應的内容.
文法
# 第一個參數必須為Request,其他參數可以依次向後寫
def api_tools(request):
return HttpResponse
複制
路由配置
from django.urls import path
ali = {
path(route,views,name=None),
path(route2,views.page2)
}
參數;
1. route: 字元串類型,比對請求路徑
2. views: 指定路徑對應視圖處理函數的名稱,需要與views比對
3. name: 為位址起别名,在模闆中位址反向解析時使用
複制
Path轉換器
文法
<轉換器類型:自定義名>
path('page/<int:page>',views.page)
# 以下是視圖函數内容
def test(request,page_num):
return HttpResponse(page_num)
複制
作用:若轉換器類型比對到對應類型的資料,則将資料按照關鍵字傳參的方式傳遞給視圖函數。
轉換器類型
-
:比對除了str
之外的非空字元串/
/v1/api/<str:toolsname>
比對
/v1/api/coretools
複制
-
: 比對或任何整數,可以傳回一個Intint
/v1/api/<int:page>
比對
/v1/api/100
複制
-
: 比對任意由ASCII字母或數字以及連字元和下劃線組成的短标簽slug
/v1/api/<slug:sl>
比對
/v1/api/this-is-user_list
複制
-
:比對非空字段,包括路徑分隔符path
/
/v1/api/<path:ph>
比對
/v1/api/a/b/c
複制
re_path
在url的比對過程中可以使用正規表達式進行精确比對
文法
from django.urls import re_path
re_path(reg,view,name=xxx)
# 正規表達式為命名分組模式(?P<name>pattern)比對提取參數後用關鍵字傳參方式傳遞給視圖函數
複制