步驟:
- 在應用目錄下創建templatetags 文件夾,文件夾必須是這個名字
- 在templatetags文件夾下創建任意名稱 tags.py 文件
- 在創建的py文件中引入如下格式代碼:
<code>from django import template
from django.utils.safestring import mark_safe
# 這裡的register不能隨便修改
register = template.Library()
@register.simple_tag
def zdytags(): # 可以定義任意名稱函
return 123/<code>
- 在需要使的模板頭部引入{% load tags %} ,tags是我們創建的tags.py文件名
- 直接用模板語言調用函數{% zdytags %} ,如果函數有參數,可以傳函數的參數
自定義filter:
- 自定義filter的方法步驟一樣,只需要更改註冊器名為filter,如下:
<code>@register.filter
def zhangzhen(a1,a2):
return a1+a2/<code>
- 使用方法與官方提供的方法一樣{{ name|zhangzhen:'tuantuan' }}
備註:最多隻能傳兩個參數
simple_tag與filter優劣對比:
- simple_tag方法可以無限傳參,filter最多隻能傳兩個參數
- simple_tag使用{% %}模板符,filter使用{{ }}模板符
- simple_tag不能使用到模板的條件語句,filter則可以