自定義Django過濾器標籤
阿新 • • 發佈:2018-12-20
django的過濾器很多,自帶的過濾器能滿足我們絕大部分的工作要求,但是當我們有特別的需求的時候就需要自定義了。
建立templatetags資料夾
注意,這個資料夾的名字是唯一的,不能更改成其他名字,資料夾在建立完成之後會新建一個__init__.py檔案,再在此資料夾下面建立一個python檔案,這個名字可以自定義
#myfilters.py檔案的內容
from django import template
# 建立一個Library類的物件
register = template.Library()
# 自定義過濾器,至少要有一個引數,最多兩個引數
@register.filter (name="mod")
def mod(num):
'''判斷num是否為偶數'''
return num % 2 == 0
@register.filter(name="mod_val")
def mod_val(num,val):
'''判斷nume是否能被val整除'''
return num%val == 0
- 過濾器其實就是python的函式
- 自定義過濾器目前支援1個引數和兩個引數的,不支援其他
- 一個引數就是過濾器前面的變數{% if value|mod%}
- 完成函式的功能要對函式進行注@register.filter(name=“mod_val”)
<!DOCTYPE html>
{% load myfilters %}
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
{% for value in values %}
{% if value|mod %}
{{value}}是偶數<br>
{% else %}
{{value}}是奇數數
{% endif %}
{% endfor%}
</ body>
</html>
- 呼叫的時候要先匯入過濾器的包{% load myfilters %}
- 使用的時候還是跟系統的過濾器是一樣的用法