1. 程式人生 > >自定義Django過濾器標籤

自定義Django過濾器標籤

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 %}
  • 使用的時候還是跟系統的過濾器是一樣的用法