1. 程式人生 > >認識django2.0讀書筆記(3)---第三章 檢視和URL配置

認識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內容。


相關推薦

no