Django開發實戰之URLconf詳解,djangourlconf詳解
什麼是URLconf?
URLconf 就像是 Django 所支撐網站的目錄。 它的本質是 URL 模式以及要為該 URL 模式調用的視圖函數之間的映射表。 你就是以這種方式告訴 Django,對於這個 URL 調用這段代碼,對於那個 URL 調用那段代碼。
上篇文章(Django實戰:構建一個blog)中我們建立了一個工程mysite,mysite/mysite/urls.py這個檔案(自動建立的)就對應URLconf,我們查看一下這個檔案,如所示:
這個檔案必須暴露出一個urlpatterns對象,由patterns函數(或方法)返回。該函數由以下兩點組成:
1.一個打頭的前置詞字元串(此處為空白)
2.一個或多個由Regex字串匹配一個或一組URL組成的Python元組。(此處是url函數)
PythonRegex
Regex (或 regexes ) 是通用的文字模式匹配的方法。 下面是一些基本的但常用的文法:
注意點1:
^表示要求運算式對字串的頭部進行匹配,$表示要求運算式對字串的尾部進行匹配。
注意點2:
Django在檢查URL模式前,會移除每一個申請的URL開頭的斜杠(/)。
例子:
r’^′:匹配的是網站的根URL,′/′(在Django項目裡經常用這個來定義首頁)r′hello/′:任何以/hello/開頭的URL將會匹配,如/hello/jack,/hello/bruce等r′hello/’:任何以/hello/結尾的URL將會匹配,如/jack/hello/,/bruce/hello/等
r’hello/’:任何包含hello/的URL將會匹配
用url函數替換元組
較老版本的Django裡面用的是元組,eg:
from django.conf.urls.defaults import *from mysite.views import hellourlpatterns = patterns('', ('^hello/$', hello),)
此處patterns函數的第二個參數是一個元組,而新版本的Django將元組替換成了url函數。url函數接收三個參數:一個Regex、一個視圖字串/函數以及一個可選的參數name,name必須保持唯一。eg:
```from django.conf.urls.defaults import *urlpatterns = patterns('', url('^hello/$', 'blog.views.hello', name='hello'),)
“`
注意這裡url的第二個參數,該參數’blog.views.hello’是一個字串,指向一個具體的函數(或方法),此處代表工程的根目錄下一個blog目錄,在blog目錄下有個views.py這個檔案,在views.py中定義了一個hello函數。比如說工程名叫mysite,那麼views.py的路徑是mysite/blog/views.py。
這裡總結一下從在瀏覽器中輸入http://ip:port/hello/到瀏覽器顯示相應的資訊的整個過程。
1.Django尋找設定檔mysite/mysite/settings.py,查看ROOT_URLCONF為多少,:
這裡為’mysite.urls’,表示URLconf為mysite/urls.py這個檔案。
2.查看mysite/urls.py,匹配Regex,看哪項能匹配hello/
3.若匹配不成功,則返回http 404資訊
4.若匹配成功,如url(‘^hello/$’, ‘blog.views.hello’, name=’hello’)就調用blog/views.py裡的hello方法,該方法接收HttpRequest參數,返回HttpResponse對象。
具體的views.py我們以後再講。
Django開發實戰視頻教程:http://www.duobei.com/course/3812028831
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。