更新時(shí)間:2022-07-27 來(lái)源:黑馬程序員 瀏覽量:
視圖是Django框架的核心之一,它接收并處理URLconfs分發(fā)的HTTP請(qǐng)求,返回響應(yīng)。本章將對(duì)視圖相關(guān)的知識(shí)進(jìn)行講解。
視圖用于處理HTTP請(qǐng)求,并返回響應(yīng)。視圖的功能決定了它的基本結(jié)構(gòu),其結(jié)構(gòu)示意如下:
def view_name(request, *arg=None, **kwargs=None): 代碼段 return HttpResponse(response)
使用以上結(jié)構(gòu)可定義一個(gè)基本視圖,顯然這個(gè)視圖本質(zhì)上是一個(gè)Python函數(shù)。結(jié)構(gòu)示意中的view_name表示視圖名稱;參數(shù)request是必選參數(shù),用于接收請(qǐng)求對(duì)象(HttpRequest類的實(shí)例);參數(shù)args和kwargs為可選參數(shù),用于接收URL中的額外參數(shù);返回值用于返回響應(yīng)對(duì)象(HttpResponse類或其子類的實(shí)例)。
在應(yīng)用的views.py文件中定義一個(gè)返回當(dāng)前日期和時(shí)間的視圖curr_time(),具體代碼如下:
from django.http import HttpResponse import detetime def curr_time(request): now = datetime.datetime.now() response = "<html><body>It is %s.</body></html>" % now return HttpResponse(response)
以上視圖將頁(yè)面的樣式以硬編碼形式寫在了代碼中,這會(huì)造成兩個(gè)問題:
?、偃粢薷囊晥D返回的頁(yè)面樣式,必須修改Python代碼。
?、谌繇?yè)面內(nèi)容較多,視圖會(huì)非常臃腫。
Django當(dāng)然考慮到了上述問題,根據(jù)MTV設(shè)計(jì)模式,Django提倡將頁(yè)面樣式放在模板文件之中,在視圖文件中使用上下文字典向模板傳遞數(shù)據(jù)。