2015-10-04 64 views
1

在Django的1.8 urls.py是這樣寫的:爲什麼在Django 1.8有不同urls.py

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的1.7 urls.py看起來是這樣的:

from django.conf.urls import patterns, url 

from . import views 

urlpatterns = patterns('', 
    url(r'^articles/2003/$', views.special_case_2003), 
    url(r'^articles/(\d{4})/$', views.year_archive), 
    url(r'^articles/(\d{4})/(\d{2})/$', views.month_archive), 
    url(r'^articles/(\d{4})/(\d{2})/(\d+)/$', views.article_detail), 
) 

燦有人解釋爲什麼在[(括號和關鍵字'模式')中有區別?

什麼是電子背景以及它如何實際顯示?

+0

你看到改變了嗎?在doc中? '[0-9]'只能匹配0-9數字,而'\ d'也可以匹配Unicode數字字符。 –

+0

單詞模式來自django 1.7文檔 – user1406647

回答

1

看到1.8 release notes

模式()幾乎沒有多大意義,是一種負擔教學新 用戶時,(回答新手的問題:「爲什麼我需要這個空 字符串作爲第一個參數模式()? 「)。由於這些原因,我們 已棄用它。更新你的代碼是爲確保 urlpatterns的簡單的django.conf.urls.url列表()實例

4

在1.7,你可以使用一個字符串,用於定義視圖的導入路徑,而不是一個實際查看功能。模式的第一個參數是一個將用於每個以下視圖的前綴。這包括來自同一模塊的多個視圖,即:

urlpatterns = patterns('myapp.views', 
    url(r'^articles/2003/$', 'special_case_2003'), 
    url(r'^articles/(\d{4})/$', 'year_archive'), 
    url(r'^articles/(\d{4})/(\d{2})/$', 'month_archive'), 
    url(r'^articles/(\d{4})/(\d{2})/(\d+)/$', 'article_detail'), 
) 

時減少重複然而,這是進口的「神奇」沒有很好的理由。它可以隱藏導入錯誤,並且總體上使調試不正確的url模式變得更加困難。出於這個原因,使用字符串而不是視圖函數在1.8中被棄用,並且將在1.10中被刪除。

由於patterns()除了向基於字符串的視圖導入添加前綴之外沒有其他目的,它也已被棄用,並將在1.10中被刪除。