django創(chuàng)建自定義模板處理器的實例詳解
django創(chuàng)建自定義模板處理器:
一、需求來源:
在django開發(fā)中,頁面是通過template(模板)進(jìn)行渲染的,對于一些數(shù)據(jù),可以通過{{ 變量 }}的方式進(jìn)行傳遞。但是,如果整個網(wǎng)站中,或者整個網(wǎng)站的大部分頁面都用到了一些變量或者數(shù)據(jù),那么每次渲染的時候都傳遞一次這幾個數(shù)據(jù)顯得相當(dāng)?shù)娜哂?。這與django的DRY(Don't repeat yourself)思想不符,因此django提供了一種方式,讓你能自定義處理器。
二、django默認(rèn)的處理器:
在django開發(fā)中,django默認(rèn)為你加載了四個處理器,這些處理器是django包自帶的。你可以在settings.py中的TEMPLATES的OPTIONS的context_processors中找到所有django為你默認(rèn)加載的處理器。
其中有包括:
'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages',
三、自定義django處理器:
建議在項目的主app下(也就是你的項目名稱的app下)創(chuàng)建一個文件叫做context_processors.py
不管是自定義的處理器還是django自帶的處理器,都是定義一個函數(shù),這個函數(shù)帶有一個request的參數(shù),返回一個字典,用來表示模板中的參數(shù)。
比如我們要創(chuàng)建一個帶有個人信息的處理器,格式如下:
def mycontact(request): return { 'telephone': 'aaa', 'qq': 'bbb', 'email': 'cc@163.com' }
在settings.py配置文件中,找到TEMPLATES里面的context_processors,然后在后面添加你的自定義的處理器,比如我們的項目名稱叫mysite,然后我把context_processors.py放到了mysite/mysite下面,也就是和settings.py同級的目錄下,因此加載的路勁為mysite.context_processors.mycontact,因此,現(xiàn)在的context_processors中的數(shù)據(jù)如下:
'context_processors': [ 'mysite.context_processors.mycontact', 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', ]
以后你就可以在你的模板文件中,通過{{變量}}的方式引入你的變量了。
注意事項:你必須在TEMPLATES中將APP_DIRS設(shè)置為True,django才會加載你放在django的app下面的處理器。
如有疑問請留言或者到本站社區(qū)交流討論,大家共同進(jìn)步,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
相關(guān)文章
Python中實現(xiàn)輸入超時及如何通過變量獲取變量名
這篇文章主要介紹了Python中實現(xiàn)輸入超時以及通過變量獲取變量的名字,本文給大家分享了解決思路主要是通過多線程法實現(xiàn),需要的朋友可以參考下2020-01-01python中pandas庫中DataFrame對行和列的操作使用方法示例
這篇文章主要介紹了python中pandas庫中DataFrame對行和列的操作使用方法示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06Pytorch矩陣乘法(torch.mul() 、 torch.mm() 和torch.m
在深度學(xué)習(xí)和神經(jīng)網(wǎng)絡(luò)的世界里,矩陣乘法是一項至關(guān)重要的操作,本文主要介紹了Pytorch矩陣乘法,包含了torch.mul() 、 torch.mm() 和torch.matmul()的區(qū)別,具有一定的參考價值,感興趣的可以了解一下2024-03-03python中@property的作用和getter setter的解釋
這篇文章主要介紹了python中@property的作用和getter setter的解釋,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-12-12Python繪圖實現(xiàn)坐標(biāo)軸共享與復(fù)用詳解
這篇文章主要為大家詳細(xì)介紹了Python在繪圖時如何實現(xiàn)坐標(biāo)軸共享與復(fù)用,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-02-02Python?matplotlib實戰(zhàn)之箱型圖繪制
箱型圖(Box?Plot),也稱為盒須圖或盒式圖,是一種用作顯示一組數(shù)據(jù)分布情況的統(tǒng)計圖,因型狀如箱子而得名,本文主要為大家介紹了如何使用Matplotlib繪制箱型圖,需要的小伙伴可以參考下2023-08-08