Django開發實戰之URLconf詳解,djangourlconf詳解

來源:互聯網
上載者:User

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

著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.