認識django2.0讀書筆記(3)---第三章 檢視和URL配置
文件下載地址:Django_2.0_中文教程 http://download.csdn.net/detail/julius_lee/6620099
線上地址:http://djangobook.py3k.cn/2.0/
Django 2.0 Book 關鍵內容記錄,主要是為了幫助記憶和理清整個框架,同時以後忘了可以檢視,回想。
1、 建立第一個django頁面:
hello world
沒有網頁框架,直接將helloworld儲存在html文件中;django靠view檢視和url產生
2、 第一個檢視
Views.py中輸入
from django.http import HttpResponse def hello(request): return HttpResponse("Hello world ")
工作:
匯入HttpResponse類,定義hello檢視函式,至少需要一個request引數,並返回一個HttpResponse例項
3、 第一個URLconf
繫結檢視函式和URLconf
URLconf 的本質是URl模式及與檢視函式之間的對映表。即哪個url呼叫哪個檢視函式
步驟:
import mysite/views.py檔案中的hello檢視,即:
from mysite.views import hello
urlpatterns 變數中新增URLpattern,即:
新增該元組的一個元素,前面是正則匹配,後面是使用的檢視函式
注意:
python的搜尋路徑
首先查詢當前目錄,檔案不存在再查詢lib中的package下的檔案
URLpattern語法
簡而言之,就是匹配首尾,首尾要確定;尾斜槓會自動轉換,也可以設定
正則表示式剛學不久,不再重複
根目錄用’^$’表示,代表一個空字串
4、 django處理請求的過程
執行runserver後,manage.py在同一目錄下查詢setting.py檔案,讀取配置資訊包含template目錄,database,ROOT_URLCONF等;ROOT_URLCONF = 'mysite.urls'即指向mysite/urls.py
然後當用戶在位址列訪問***/hello時,django裝載URLconf,然後匹配URLconf中的URLpatterns,直到匹配成功。匹配成功後就呼叫view函式,將HttpRequest物件作為第一個引數。
總結一下:
進來的請求轉入/hello/.
Django通過在ROOT_URLCONF配置來決定根URLconf.
Django在URLconf中的所有URL模式中,查詢第一個匹配/hello/的條目。
如果找到匹配,將呼叫相應的檢視函式
檢視函式返回一個HttpResponse
Django轉換HttpResponse為一個適合的HTTP response, 以Web page顯示出來
5、 第二個檢視:動態內容
1)對於views.py
import datetime
def current_datetime(request):
now = datetime.datetime.now()
html = "<html><body>It is now%s.</body></html>" % now
return HttpResponse(html)匯入日期模組
賦值
格式化字串構造html響應
2)對於urls.py
from mysite.views import hello,current_datetime
urlpatterns = patterns('',
('^hello/$', hello),
('^time/$', current_datetime),
)匯入檢視函式
增加URL對映模式對映time
3)URL配置的鬆耦合原則
即檢視函式的實現和URL的返回放在不同地方。檢視函式也可以被不同的url重用
6、 第三個檢視:動態URL
顯示當前時間加上時間偏差量/time/plus/1
常規思路:編寫多個url及檢視函式
簡化方法:
方法一:查詢字串引數,常規方法
方法二:使用萬用字元,django
編寫urls.py
(r'^time/plus/\d{1,2}/$', hours_ahead),#只允許一個或兩個數字編寫hours_ahead檢視
def hours_ahead(request, offset):
try:
offset = int(offset)
except ValueError:
raise Http404()
dt= datetime.datetime.now() + datetime.timedelta(hours=offset)
html = "<html><body>In %s hour(s), it will be%s.</body></html>" % (offset, dt)
return HttpResponse(html)說明:
Request作為HttpResponse的物件;
Offset是從url中提取出來的,捕獲值永遠是字串型別,故需要型別轉換。當對非整數進行轉換時會出錯,報錯404;
7、 django的漂亮出錯頁面
頁面出錯後會給出大量資訊,一般異常資訊有:
異常資料型別,異常引數,哪個檔案異常,出錯的具體行位置
還可以顯示模板語法錯誤
對於django出錯頁的除錯,可以採用插入assert False 來代替平時使用的print語句。
8、本章總結:
以上就包含了檢視函式和硬編碼的HTML內容。
