Django路由配置之正則表達式詳解


正則表達式詳解

 

urls.py

 1 from django.conf.urls import url
 2 
 3  
 4 
 5 from . import views
 6 
 7  
 8 
 9 urlpatterns = [
10 
11     url(r'^articles/2003/$', views.special_case_2003),
12 
13 #思考:如果用戶想看2004、2005、2006....等,你要寫一堆的url嗎,是不是在articles后面寫一個正則表達式/d{4}/就行啦,網址里面輸入127.0.0.1:8000/articles/1999/試一下看看
14 
15     url(r'^articles/([0-9]{4})/$', views.year_archive),
16 
17     url(r'^articles/([0-9]{4})/([0-9]{2})/$', views.month_archive),
18 
19 #思考,如果你想拿到用戶輸入的什么年份,並通過這個年份去數據庫里面匹配對應年份的文章,你怎么辦?怎么獲取用戶輸入的年份啊,分組/(\d{4})/,一個小括號搞定
20 
21     url(r'^articles/([0-9]{4})/([0-9]{2})/([0-9]+)/$', views.article_detail),
22 
23 ]

 

views.py

views.py中視圖函數的寫法:

第一個參數必須是request,后面跟的三個參數是對應着上面分組正則匹配的每個參數,必須按順序對應

def article_detail(request,year,month,day):

    return HttpResponse(year+month+day)

 

 

注意事項

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

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

3.     不需要添加一個前導的反斜杠(也就是寫在正則最前面的那個/),因為每個URL 都有。例如,應該是^articles 而不是 ^/articles

4.     每個正則表達式前面的'r' 是可選的但是建議加上。

5.     ^articles$  以什么結尾,以什么開頭,嚴格限制路徑

補充說明

# 是否開啟URL訪問地址后面不為'/'跳轉至帶有'/'的路徑的配置項

APPEND_SLASH=True

 

Django settings.py配置文件中默認沒有 APPEND_SLASH 這個參數,但 Django 默認這個參數為 APPEND_SLASH = True。 其作用就是自動在網址結尾加'/'。其效果就是:我們定義了urls.py

from django.conf.urls import url

from app01 import views

 

urlpatterns = [

        url(r'^blog/$', views.blog),

]

訪問http://www.example.com/blog時,默認將網址自動轉換為http://www.example/com/blog/

如果在settings.py中設置了 APPEND_SLASH=False,此時我們再請求http://www.example.com/blog時就會提示找不到頁面。


免責聲明!

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



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