一、概述
想要定製或者擴充套件模版引擎,模版系統工作原理,自動轉移特徵
名詞解析:模板 渲染 就是是通過從context獲取值來替換模板中變數並執行所有的模板標籤。
二、context處理器
如果在模版中經常使用相同的模版變數,這是會產生大量的**冗餘,可以通過requestcontext來解決這個問題。
例如:
fromview codedjango.template import loader, context
def view_1(request):
# ...
t = loader.get_template('
template1.html')
c =context()
return
t.render(c)
def view_2(request):
# ...
t = loader.get_template('
template2.html')
c =context()
return t.render(c)
fromview codedjango.template import loader, requestcontext
def custom_proc(request):
""return
def view_1(request):
# ...
t = loader.get_template('
template1.html')
c = requestcontext(request, ,
processors=[custom_proc])
return
t.render(c)
def view_2(request):
# ...
t = loader.get_template('
template2.html')
c = requestcontext(request, ,
processors=[custom_proc])
return t.render(c)
三、django提供了 全域性 context處理器的支援
template_context_processors
指定了哪些context processors
總是預設被使用。這樣就省去了每次使用 requestcontext
都指定 processors
的麻煩。在setting檔案中可以找到
template_context_processors =(每一項都是可呼叫函式,跟上面的custom_proc'django.core.context_processors.auth',
'django.core.context_processors.debug',
'django.core.context_processors.i18n',
'django.core.context_processors.media',
)
有相同的介面。向其中新增的context處理器函式路徑,都應該包含在系統path的搜尋路徑。
每個處理器將會按照順序應用。 也就是說如果你在第乙個處理器裡面向context新增了乙個變數,而第二個處理器新增了同樣名字的變數,那麼第二個將會覆蓋第乙個。
四、html自動轉意,django裡預設情況下,每乙個模板自動轉意每乙個變數標籤的輸出。主要是解決使用者提交的資料不應該完全被信任,有可能是有惡意用途的字串
比如:使用者輸入了,如果將這個字串直接顯示,將會彈出乙個警告框。而不是輸入使用者的名字。
如果你不想資料被自動轉意,在每一站點級別、每一模板級別或者每一變數級別你都有幾種方法來關閉它
對於單獨的變數
用safe過濾器為單獨的變數關閉自動轉意:
this will be escaped: }對於模板塊this will not be escaped: }
為了控制模板的自動轉意,用標籤autoescape來包裝整個模板(或者模板中常用的部分),autoescape 標籤有兩個引數on和off 。就像這樣:
auto-escaping is on by default五、載入模版的方法. hello }
this will not be auto-escaped: }.
nor
this
: }
django.template.loaders.filesystem.load_template_source
: 這個載入器根據 template_dirs
的設定從檔案系統載入模板。它預設是可用的。
中的每個應用,這個載入器會查詢templates
子目錄。 如果這個目錄存在,django就在那裡尋找模板。這個載入器預設啟用。
django1 8讀書筆記模型高階高階
一 訪問外來鍵和多對多值 例如 模型類定義如下 from django.db import models class publisher models.model name models.charfield max length 30 address models.charfield max len...
讀書筆記模版
書評 讀書時間 書評的整體內容,比如 羊皮卷是一本值得多次重新閱讀的書,每次重新翻閱,不同的心境不同的狀況,都會有不同的體會,對待此書我的筆記也基本是原文摘錄和總結為主,一種個人心境全被道出,總能被書牽引著前行的感受。例 無論是7個習慣的積極主動,還是羊皮卷,選擇權是我們最重要的權利,無論我們是否是...
讀書筆記 模版 4
模板特化 template int compare const t v1,const t v2 形參為const char 的const 引用 模板特華可以宣告而無須定義,總是包含模板形參說明符,即template 還必須有函式形參表,如果可以從形參推斷模板實參,則不必需顯示指定模板實參 templ...