Django View函式的公升級之路

2021-10-05 07:39:37 字數 2607 閱讀 7062

記錄view檢視從最簡單的邏輯實現出發,慢慢的變為使用更多封裝,和更多功能的模組。

)很簡單,只是單純的返回乙個http的response就行了。這個函式中用到了什麼?他又返回了什麼?

使用乙個request例項做引數:request包含了很多http請求的資訊,他以類似字典的方式取用資料。他必須是試圖函式的第乙個引數。

返回了乙個httpresponse例項:對我們要返回的內容進行了http的封裝。

要使乙個函式成為檢視函式,需要滿足上面這兩個條件。但是也不是必須的。

"% now # 構造了一段html的響應

return httpresponse(html)上面這個view函式就將返回純文字的內容轉變成了返回帶有html標記的東西了。

那每次都這樣手寫html標記?肯定是不合適的。

def

current_datatime

(request)

:"""展示當前時間"""

now = datetime.datetime.now(

) fp =

open

('/home/djangouser/template/mytemplate.html'

) t = template.template(fp.read())

fp.close(

) html = t.render(template.context())

return httpresponse(html)

使用open開啟檔案然後再渲染顯得有些low,而且這些**是重複的,可以對它進行封裝。

django當然是提供了相應的api的,但是首先要告訴程式我們的模板放在哪。setting.py中的template_dirs正是這個功能。template_dirs接受乙個元組。其中存放模板位置的位址。

模板

it is now }.

當編寫好模板**,並且設定好路徑後,就可以將view函式進行改造了

# 填充,渲染一起完成

return httpresponse(html)get_template返回的是template物件。我們簡化了**,但是還不夠簡潔,因為還是分了三步。使用乙個函式來完成所有事情是最簡單的。

隆重推出 render_to_response

from django.shortcuts import render_to_response

import datetime

defcurrent_datetime

(request)

: now = datetime.datetime.now(

)return render_to_response(

'current_datetime.html'

,)

render_to_response第乙個引數是模板檔案,第二個引數是要渲染的資料。

當然,當然,如果你連字典也不想寫,可以這樣。

def

current_datetime

(request)

: current_date = datetime.datetime.now(

)return render_to_response(

'current_datetime.html'

,locals()

)

C 之函式的公升級(上)

函式預設引數 函式佔位引數 c 中的const常量可以替代巨集常數定義,如 const int a 3 define a 3 c 中是否有解決方案替代巨集 片段呢?內聯函式 替代巨集 片段就可以避免巨集的 c 中推薦使用內聯函式替代巨集 片段 c 中使用inline關鍵字宣告內聯函式 include...

函式練習 公升級小公舉

include include gzdemo.h using namespace std intmain ifndef gzdemo h included define gzdemo h included 使用函式公升級 小公主養成記 中的基本屬性錄入及排序功能 基本屬性 體力 智力 魅力 道德 氣...

L6 6 函式公升級

上節課我們學習了函式的引數,學習了四種傳參方式,分別是位置引數 預設引數 可變引數和關鍵字引數。在函式內部,可以呼叫其他函式。如果乙個函式在內部呼叫自身,這個函式就是遞迴函式。def foo num print num if num 1 return foo num 1 print num,foo ...