mysite/news/urls.py:html
from django.conf.urls import url from . import views urlpatterns = [ 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), ]
上面的代碼將URLs映射做爲簡單的正則表達式映射到Python的回調函數(視圖)。正則表達式經過圓括號來「捕獲」URLs中的值。 當一個用戶請求一個頁面時,Django將按照順序去匹配每個模式,並停在第一個匹配請求的URL上。 (若是沒有匹配到, Django將調用一個特殊的404視圖。)整個過程是極快的,由於正則表達式在加載時編譯。python
一旦有一個正則表達式匹配上了,Django 將導入和調用對應的視圖,它其實就是一個簡單的Python函數。 每一個視圖將獲得一個request對象 —— 它包含了request 的meta信息 —— 和正則表達式所捕獲到的值。正則表達式
例如,若是一個用戶請求了URL 「/articles/2005/05/39323/」,Django將調用函數news.views.article_detail(request, '2005','05', '39323')。django
news.views.py中:函數
def article_detail(request,year, month, number):url
......spa
調用「/articles/2005/05/39323/?day=Monday」, 參數與值得對應關係:code
request.GET['day'] == 'Monday'htm
year == 2005對象
month == 05
number == 39323