程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

技術文檔2:Django中URL路由解析

編輯:Python

URL定義:

urls.py ----- 負責把URL模式映射到應用程序。URL是Django收到用戶請求後,根據用戶請求的URL地址和urls.py裡配置的映射關系,以正確的確定出某個URL調用哪一段邏輯代碼來對應執行相應的視圖函數或視圖類,最後由視圖返回給客戶端想要接收的數據。

Django中的路由解析的過程主要是:

  1. 由客戶端發送訪問請求;
  2. 服務端接受客戶端的請求,拆解出請求;
  3. 服務端優先匹配項目目錄下的URL,再匹配具體應用中的URL;
  4. 做出判斷,若匹配成功則執行對應的視圖;未匹配成功則返回404;
  5. 客戶端接受響應並渲染執行;

路由主要分為兩種:

  1. 定義在工程同名目錄下的urls.py的文件中,該文件是Django解析路由的入口,也叫總路由;
  2. 每個子應用為了保持相對的獨立性,在每個子應用中定義屬於自己的urls.py來保存該應用的路由,也叫做子路由;

也可將功能的全部路由信息都定義在主路由文件中,在子應用中不再設置urls.py文件中;

路由解析順序:

路由的查找順序是從上到下,因此有可能會使上面的路由屏蔽掉下面的路由,帶來非預期結果。

因此在設置路由時要:

1.需要注意定義路由的順序,避免出現屏蔽效應。

2.子路由定義時,將正則表達式寫完整,加上結束符.

路徑結尾斜線/的說明:

Django中定義路由時,通常以斜線/結尾,其好處是用戶訪問不以斜線/結尾的相同路徑時,Django會把用戶重定向到以斜線/結尾的路徑上,而不會返回404不存在。

自定義的表達式匹配:轉換器類型 類型說明

<int:number>

將number轉換為整型,匹配0或任何正整數

<str:name>

將name轉換為浮點型,匹配除了/之外的非空字符

<slug:path1>

匹配字母、數字、下劃線組成的字符串

<uuid:path2>

匹配格式化的UUID唯一識別碼

<path:path3>

匹配任何非空字符,包括路徑分割符,?除外

其他注意事項:

urlpatterns中的元素按照書寫順序從上往下逐一匹配正則表達式,一旦匹配成功則不再繼續。

若要沖URL中捕獲一個值,只需要在它周圍放置一對圓括號(分配分組)

不需要添加一個前導的反斜槓(也就是寫在正則最前面的那個/),因為每個url都有。例如:應該是^index而不是 ^/index。每個正則表達式前面的"r" 可選但是建議加上idex$   以什麼結尾,以什麼開頭,嚴格限制路徑

 


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved