django 2.0路由配置變化


 
        

urlpatterns變量​​的語法

urlpatterns應該是path()和/或re_path()實例的Python列表。

  1. 首先,Django會使用根路由解析模塊(root URLconf)來解析路由。 通常,這是ROOT_URLCONF設置的值,但是如果傳入的HttpRequest對象具有urlconf屬性(由中間件設置)那么ROOT_URLCONF的設置將被其替換。
  2. Django加載該Python模塊並查找變量urlpatterns。 它應該是django.urls.path()或者django.urls.re_path()實例的Python列表。

path 是新的方法,re_path方法和原來的url用法一致,使用正則表達式
代碼:

from django.urls import path

from . import views

urlpatterns = [
    path('articles/2003/', views.special_case_2003),
    path('articles/<int:year>/', views.year_archive),
    path('articles/<int:year>/<int:month>/', views.month_archive),
    path('articles/<int:year>/<int:month>/<slug:slug>/', views.article_detail),
]
 

變化:

  不在使用url函數,轉而使用path轉換器

 
        

  直接在url中表示捕獲的參數類型,

 
        

  提取的參數會進行類型轉換,不像正則表達式中都是捕獲字符串

 
        

  不以斜杠結尾則匹配不到



  • 要從URL捕獲某個值,使用尖角括號。
  • 捕獲的值可以選擇包含一個轉換器類型。 例如, 使用 <int:name> 來捕獲一個整形參數。 如果沒有包含轉換器, 那么除了/ 字符外, 會匹配任意字符串。
  • /articles/2005/03/ 的請求將與列表中的第三個條目匹配。 Django會調用函數views.month_archive(request, year=2005, month=3)
  • /articles/2003 不會匹配到任何一個模式,因為每個模式都要求URL以斜杠結尾。

 

轉換器類型以下路徑轉換器默認可用:

  • str - 匹配除了路徑分隔符'/'的任意非空字符串。 如果表達式中沒有包含轉換器,那么這將是默認行為。
  • int - 匹配0或任意正整數。 並作為 int 返回。
  • slug - 匹配任意的黏接字符串(slug string),這些黏接字符串是ASCII的字母或數字,詞與詞之間由連字符或下划線黏接組成。 例如, building-your-1st-django-site
  • uuid - 匹配一個格式化的 UUID. 為了防止多個URL映射到同一頁面,必須包含多個破折號(dash),同時字母必須小寫。 例如, 075194d3-6885-417e-a8a8-6c931e272f00返回一個 UUID 實例。
  • path - 匹配包含路徑分隔符 '/'在內的任意非空字符串。 相對於str,這允許你匹配一個完整的URL路徑,而不僅僅是URL路徑的一部分。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM