Django開發實戰之URLconf詳解

2021-07-16 13:38:29 字數 2291 閱讀 4904

什麼是urlconf?

urlconf 就像是 django 所支撐**的目錄。 它的本質是 url 模式以及要為該 url 模式呼叫的檢視函式之間的對映表。 你就是以這種方式告訴 django,對於這個 url 呼叫這段**,對於那個 url 呼叫那段**。 

上篇文章(django實戰:構建乙個blog)中我們新建了乙個工程mysite,mysite/mysite/urls.py這個檔案(自動建立的)就對應urlconf,我們檢視一下這個檔案,如下圖所示: 

這個檔案必須暴露出乙個urlpatterns物件,由patterns函式(或方法)返回。該函式由以下兩點組成: 

1.乙個打頭的字首字串(此處為空) 

2.乙個或多個由正規表示式字串匹配乙個或一組url組成的python元組。(此處是url函式)

python正規表示式

正規表示式 (或 regexes ) 是通用的文字模式匹配的方法。 下面是一些基本的但常用的語法: 

注意點1:

^表示要求表示式對字串的頭部進行匹配,$表示要求表示式對字串的尾部進行匹配。 

注意點2:

django在檢查url模式前,會移除每乙個申請的url開頭的斜槓(/)。 

例子: 

r』^′:匹

配的是網

站的根u

rl,′

/′(在

djan

go專案

裡經常用

這個來定

義首頁)

r′he

llo/

′:任何

以/he

llo/

開頭的u

rl將會

匹配,如

/hel

lo/j

ack,

/hel

lo/b

ruce

等r′h

ello

/ 』:任何以/hello/結尾的url將會匹配,如/jack/hello/,/bruce/hello/等 

r』hello/』:任何包含hello/的url將會匹配

用url函式替換元組

較老版本的django裡面用的是元組,eg:

from django.conf.urls.defaults import *

from mysite.views import hello

urlpatterns = patterns('',

('^hello/$', hello),

)

此處patterns函式的第二個引數是乙個元組,而新版本的django將元組替換成了url函式。url函式接收三個引數:乙個正規表示式、乙個檢視字串/函式以及乙個可選的引數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,匹配正規表示式,看哪項能匹配hello/ 

3.若匹配不成功,則返回http 404資訊 

4.若匹配成功,如url(『^hello/$』, 『blog.views.hello』, name=』hello』)就呼叫blog/views.py裡的hello方法,該方法接收httprequest引數,返回httpresponse物件。 

具體的views.py我們以後再講。

Django開發實戰

django開發流程 參考首先說明的是專案中要包含這幾個檔案 changelog.md 用來記錄專案的變更,主要針對每次發布版本的更新 如果團隊使用git,其實也可以使用git生成 另外,這個檔案對於開源專案,十分必要 如果有興趣的話可以看看django的release logreadme.md 用...

Django開發登入功能實戰

django 如果是定義函式寫登入路由,需要判斷請求方法.為了簡化 現在可以使用django 中的view.目前是經常用到的,和flask中的restful 介面的寫法是差不多的.當然如果你框架還沒學或者python沒學好,建議可以先去小編的python交流.裙 一久武其而而流一思 數字的諧音 轉換...

Django實戰001 開發環境搭建

django是一款目前比較流行的web框架,它是基於python開發的一款輕量型的框架,django我們可以快速而且高效的搭建屬於我們自己的web平台,因為應用廣泛,所以基於djaogo的元件也是特別的多,只要你能想到的基本上都能找到對應的元件幫你快速的實現功能。今天要做的就是在windows上搭建...