django 過濾器總結


Django過濾器

add過濾器:將字符串和字母、整數鏈接(若為字符串會轉化為整數形式)
注:若是一個字母字符串和一個數字進行鏈接會輸出空
    {{ 1|add:2 }}返回一個3
    {{ "2"|add:3 }}返回一個5
    {{ "a"|add:3 }}#返回一個空

cut過濾器 移除指定的字符串注:后面的參數必須是字符串的形式
    {{ "hello world"|cut:" " }}#移除了hello world 里的所有空格 結果為 helloworld
    {{ "hello world"|cut:"e" }}#結果為hllo world 移除了e
    {{ 123456|cut:1 }}#會報錯 是因為參數不是字符串的形式 不管前面所要移除的對象是否為整數 參數必須是字符串的形式

data過濾器--過濾時間的過濾器(要用到datetime模塊)
    {{ time|date:"Y-m-g" }}#后面的參數必須要加引號 會顯示出時間年月時分

first過濾器和last過濾器--輸出列表/元組/字符串中的第一個 /最后一個值(不能傳參數)
且元祖列表都要提前定義(只輸入變量名)
#name:["ll","ww","ee"]
    {{ name|first }}#輸出li
    {{ name|last }}#輸出ee
    {{ "15784"|first }}#字符串 輸出1

floatformat過濾器--將浮點數保留小數 不傳如參數就是默認保留一位(只看小數點后兩位)
且正數和負數方式一樣
    {{ 1.41|floatformat }}#輸出1.4
    {{ 1.545|floatformat }}#輸出1.5(只看小數點后兩位等同於1.54)
    {{ -1.05|floatformat }}#輸出-1.1
    {{ 1.247|floatformat:2 }}#輸出1.25
join過濾器 在中間加一些特殊符號 類似於python的join(可以在列表,元祖操作)
    {{ "hello"|join:"*" }}#輸出h*e*l*l*o
    {{ name|join:"-" }}

length過濾器 獲取字符串、元祖、列表的長度(沒有參數)
    {{ "1515"|length }}#輸出4

upper/lower過濾器 將字母改成大/小寫(沒有參數)
    {{ "woaini"|upper }}#輸出WOAINI
    {{ "DEFRT"|lower }}#輸出defrt

random過濾器 隨機抽取列表、元祖、字符串中的隨機一個數,類似於python中的random模塊
    {{ name|random }}#隨機在這個里面輸出一個值

safe過濾器 關閉字符串自動轉義 就是傳入的值里面沒有任何特殊字符就會原樣輸出 若有就會轉義輸出(列入<br>),且python中的特殊字符無法識別
#"style": "abcdef<br>adasds"
    {{ style|safe }}#會輸出abcdef
                            adasds
#"style": "woaini"
    {{ style|safe }}#會輸出woaini(原樣輸出)

slice過濾器 類似於python的slice 切片(對字符串、元祖、列表操作)
    {{ "woaini"|slice:"2" }}#輸出wo(默認是從第0位開始到第2位結束,且不包含第二位)
    {{ "woshini"|slice:"2:5" }}#輸出shi

striptags過濾器 刪除字符串中的html標簽(前面的參數){{ value|striptags }} 中的value中的html標簽(沒有參數)
    {{ style|striptags }}#輸出一個不帶有html標簽的(style里有h1標簽就會刪除原樣輸出)

truncatechars過濾器 如果給定的字符串長度超過了過濾器指定的長度。那么就會進行切割,並且會拼接三個點來作為省略號
    {{ "woaini"|truncatechars:5 }}#輸出wo...本應輸出woain但要用三個省略號作為末尾,所以就要輸出wo...
    {{ "woaini"|truncatechars:6 }}#輸出woaini 字符串長度和過濾器指定長度相同 原樣輸出
注意:若value中帶有html標簽 不會自動轉義 會自主輸出
#"style": "<h1>abcdefadasds</h1>"
    {{ style|truncatechars:6 }}#輸出<h1..

truncatechars_html過濾器 truncatechars過濾器類似只是不會切割html標簽(輸出的結果類似)
#"style": "<h1>abcdefadasds</h1>"
    {{ style|truncatechars_html:5}}#輸出<h1>ab...</h1>

default過濾器: 使用方式'{{ value | default('默認值')}}'。如果Value 這個‘key’不存在,那么就會使用‘default’過濾器提供的默認值。
               如果你想使用類似於‘python’中判斷某個值是否為false(例如:none,空字符串、空列表、空字典),
               那么就必須傳遞另外一個參數‘{{value | default ('默認值'boolean = True)}}’

    {{ "nlll"|default:"noneddd" }}#輸出nlll 后面的值是False 就會輸出value上寫的值
default_if_none過濾器 只有值是none是才會用default_if_none提供的默認值 和default的關系是default包含defaul_if_none過濾器
{{ "nonon"|default_if_none:"1" }}#輸出的值為nonon

 

 

 

自定義過濾器

 

自定義過濾器的步驟:

首先在某個app中,創建一個python包,叫做templatetags,注意,這個包的名字必須為templatetags,不然就找不到。

在這個templatetags包下面,創建一個python文件用來存儲過濾器。

在新建的python文件中,定義過濾器(也就是函數),這個函數的第一個參數永遠是被過濾的那個值,並且如果在使用過濾器的時候傳遞參數,那么還可以定義另外一個參數。但是過濾器最多只能有2個參數。

在寫完過濾器(函數)后,要使用django.template.Library.filter進行注冊,文件my_filter.py。

from django import template

register = template.Library()

def greet(value,word):

    return value + word

register.filter("greet",greet)

還要把這個過濾器所在的這個app添加到settings.INSTALLED_AAPS中,不然Django也找不到這個過濾器。

在模板中使用load標簽加載過濾器所在的python包。(文件index.html)

{% load my_filter %}

可以使用過濾器了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM