什麼是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上搭建...