django的模板語言包含了各種各樣的內建標籤和過濾器來滿足你的應用需求,不過有時候你也會發現你的需要的功能不在內建的功能中,這時候你可以通過python語言自定義標籤和過濾器來擴充套件模板引擎,然後在你的模板中使用來載入使用它們。
首先建立好包檔案:__init__.py
templatetags/
__init__.py
page.py
views.py
models.py
接著編寫page.py檔案的內容
# -*- coding: utf-8 -*-
#這裡先導入模板庫
from django import template
register=template.library()
#自定義自己的過濾器,將傳入發字串轉為大寫
@register.filter
def my_upper(val):
print('val from template:',val)
return val.upper()
#自定義標籤
from django.utils.html import format_html
@register.******_tag
def circle_page(curr_page,loop_page):
offset=abs(curr_page-loop_page)
if offset<3:
if curr_page==loop_page:
page_ele='%s
'%(loop_page,loop_page)
else:
page_ele='%s
'%(loop_page,loop_page)
return format_html(page_ele)
else:
return ''
在需要進行引入的.html檔案的最上方中,增加如下,將檔案引入:
在具體需要過濾的地方,引入我們page.py檔案中定義的函式:
} | my_upper
在需要自定義標籤的地方,引入:
django 自定義標籤和過濾器
django支援自定義標籤和過濾器。起初還不太重視它這項功能,但最近試了試自定義標籤。發現django這個功能實在是太爽了。再如果是在templatetags資料夾中定義了標籤,如 test tags.py,要如何使用我們自定義的test tags.py呢。很簡單,只要在django的模板中加入,在...
Django 自定義標籤和過濾器
from django import template from django.utils.safestring import mark safe register template.library register的名字是固定的,不可改變 register.filter name myfilter...
Django自定義過濾器和自定義標籤
3 在模板下建立任意名稱的.py檔案 4 在剛剛建立的.py檔案中定製過濾器 from django.template import library register library register.filter name rule 最多包含兩個引數 defrule value,before 將b...