django1 8讀書筆記模版高階高階

2021-09-08 04:05:07 字數 2483 閱讀 8386

一、概述

想要定製或者擴充套件模版引擎,模版系統工作原理,自動轉移特徵

名詞解析:模板 渲染 就是是通過從context獲取值來替換模板中變數並執行所有的模板標籤。

二、context處理器

如果在模版中經常使用相同的模版變數,這是會產生大量的**冗餘,可以通過requestcontext來解決這個問題。

例如:

from

django.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)

view code

from

django.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)

view code

三、django提供了 全域性 context處理器的支援

template_context_processors

指定了哪些context processors

總是預設被使用。這樣就省去了每次使用 requestcontext

都指定 processors

的麻煩。在setting檔案中可以找到

template_context_processors =(

'django.core.context_processors.auth',

'django.core.context_processors.debug',

'django.core.context_processors.i18n',

'django.core.context_processors.media',

)

每一項都是可呼叫函式,跟上面的custom_proc

有相同的介面。向其中新增的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...