在上一節,使用django-admin.py startproject製做的mysite文件夾中,建立一個叫作views.py的空文件。這個Python模塊健柏寒這一章的視圖。html
views.py文件的內容:python
from django.http import HttpResponse def hello(request): return HttpResponse("hell world")
咱們定義一個叫作hello的視圖函數:web
每一個視圖函數至少要有一個參數,一般被叫作request。這是一個觸發這個視圖、包含當前web請求信息的對象,是類django.http.HttpRequest的一個實例。在這個示例中,咱們雖然不用request作任何事,然而它仍必須是這個視圖的第一個參數。正則表達式
這個函數僅僅返回一個HttpResponse對象,這個對象包含了文本"Hello world"。django
一個視圖就是python的一個函數。這個函數的第一個參數的類型是HttpRequest;它返回一個HttpResponse實例。爲了使python的函數成爲一個django可識別的視圖,它必須知足這兩個條件。(也有例外)瀏覽器
要想在瀏覽器裏看到咱們剛纔寫的內容,就要告訴項目mysite經過一個詳細描述的URL來顯示的而且激活這個視圖。爲了綁定視圖函數和URL,咱們使用URLconf。服務器
URLconf就像是django所支撐網站的目錄。它的本質是URL模式以及要爲該URL模式調用的視圖函數之間的映射表。你就是以這種方式告訴django,對於這個URL調用這段代碼,對於那個URL調用那段代碼。函數
以前執行django-admin.py startproject時,該腳本會自動爲你建一份URLconf(即urls.py)。測試
打開urls.py文件,看到內容顯示:網站
調用patterns()函數並將返回結果保存到urlpatterns變量。
django指望能從ROOT_URLCONF模塊中找到urlpatterns變量。該變量定義了URL以及用於處理這些URL的代碼之間的映射關係。若是想在URLconf中加入URL和view,只需增長映射URL模式和view功能的Python tuple便可。這裏掩飾如何添加view中hello功能。
from fjango.conf.urls.defaults import * from mysite.views import hello urlpatterns = [ url(r'^hello/$', hello), url(r'^time/$, date_time) ]
django在檢查URL模式前,移除每個申請的URL開頭的斜槓(/)。這意味着咱們爲/hello/寫URL模式不用包含斜槓(/)。
模式是正則表達式詳細參見:http://www.cnblogs.com/Guido-admirers/p/6235484.html
若是有人申請訪問/hello(尾部沒有/)會怎樣。用爲咱們的URL模式要求尾部有一個斜槓(/),那個URL將不匹配。然而,默認地,任何不匹配或尾部沒有斜槓(/)的申請URL,將被從新定向至尾部包含斜槓的相同字眼的URL。(這是受配置文件setting中的APPEND_SLASH項控制的)
若是你喜歡全部的URL都以'/'結尾的人(django開發者的偏心),那麼你只須要在每一個URL後添加斜槓,而且設置」APPENDSLASH「爲」True「。若是不喜歡URL以斜槓結尾或者根據每一個URL來決定,那麼須要設置」APPENDSLASH「爲」False「,而且根據本身的意願來添加結尾斜槓在URL模式後。、
啓動django開發服務器來測試修改好的URLconf,運行命令行python manage.py runserver,開發服務器會自動監測代碼改動並自動重新載入。
當你經過在瀏覽器裏敲http://127.0.0.1:8000/hello/來訪問helloworld消息的時候,django的全部均開始與setting文件。當運行python manage.py runserver,腳本將在與manage.py同一個目錄下查找名爲setting.py的文件。這個文件包含了全部有關這個django項目的配置信息,均大寫:TEMPLATEDIRS,DATABASENAME等。最重要的設置是ROOT_URLCONF,它將做爲URLconf告訴django在這個站點中哪些python的模塊將被用到。
django-admin.py startproject建立文件setting.py和urls.py,setting.py包含一個ROOT_URLCONF配置用來指向自動產生的urls.py。打開文件settings.py:能夠看到 ROOT_URLCONF = 'mysite.urls'
相對應的文件是mysite/urls.py
當訪問URL/hello/時,django根據ROOT+URLCONF的設置裝載URLconf。而後按順序逐個匹配URLconf裏的URLpatterns,直到找到一個匹配。當找到這個匹配的URLpatterns就調用相關聯的view函數,並把HttpRequest對象做爲第一個參數。一個視圖功能必須返回一個HttpResponse。一旦作完,django將完成剩餘的轉換python的對象到一個合適的帶有HTTP頭和body的webResponse,(例如,網頁內容)。
總結一下: