Django內置過濾器詳解附代碼附效果圖--附所有內置過濾器幫助文檔

前言
  • 基本環境
    • Django版本:1.11.8
    • Python版本:3.6
    • OS: win10 x64
  • 本文摘要
內置過濾器

注意:全部帶參數的過濾器,在使用時,冒號:和參數中間不能有空格。javascript

add加

  • 功能:
    把add後的參數num加給value;
    數字相加會進行算術相加;
    字符串會被拼接。html

  • 語法:
    {{ value|add:"num" }}java

  • 示例效果:python

    一、數字相加
    這裏寫圖片描述git

    二、字符串相加
    這裏寫圖片描述github

join鏈接

  • 功能:
    以指定字符串str鏈接列表list中的元素,與python中的str.join(list)類似;
  • 語法
    {{ value|join }}
  • 示例效果:
    使用"// "鏈接列表,
    {{ value|join:" // " }}
    這裏寫圖片描述

addslashes在引號前加斜槓

  • 功能:
    在引號前面加上斜杆。例如,用於在CSV中轉義字符串。
  • 語法:
    {{ value|addslashes }}
    若是value是"I'm using?Django",輸出將變成"I'm using Django".
  • 示例效果:
    地址欄中的 %20表示空格;
    這裏寫圖片描述

capfirst首字母大寫

  • 功能:
    大寫變量的第一個字母。若是第一個字符不是字母,則該過濾器不會生效。
  • 語法:
    {{ value | capfirst }}
  • 示例效果:
    這裏寫圖片描述

title首字母大寫

  • 功能:
    大寫字符串中單詞的第一個字母。若是第一個字符不是字母,則該過濾器不會生效。
  • 語法:
    {{ value | title}}
  • 示例效果:

這裏寫圖片描述
當單詞「1good」並非以字母開頭時,title過濾器失效。django

  • 拓展:
    • upper大寫過濾器,將全部字母都大寫, {{ value | upper}}
    • lower大寫過濾器,將全部字母都小寫, {{ value | lower}}

cut切割指定字符

  • 功能:
    移除value中全部的與給出的變量相同的字符。
  • 語法:
    {{ value|cut:"str" }};str爲指定移除字符。
  • 示例效果:
    這裏寫圖片描述

length求字符串或列表長度

  • 功能:
    返回字符串或列表長度;
  • 語法:
    {{ value|length}}瀏覽器

  • 示例效果:安全

這裏寫圖片描述

  • 拓展:
    • length_is,若value的長度與width相等,則返回True;不然,返回False。
      {{ value|length_is:"width" }}

linenumbers換行加行號

  • 功能:
    當文本爲多行時,爲每行添加行號。返回的文本多是一行,能夠同時使用linebreaksbr換行。
  • 語法:
    {{ value|linenumbers }}
  • 示例效果:
    這裏使用value='a \n b \n c',爲了防止瀏覽器解析爲一行,這裏使用linebreaksbr過濾器進行換行。
    {{ value|linenumbers|linebreaksbr }}
  • 拓展:
    • linebreaksbr是一個換行過濾器,語法爲:{{ value|linebreaksbr }},它替換字符串中全部的「\n」爲「
      」;
    • 例如, 。
    • linebreak也是一個換行過濾器,語法爲:{{ value|linebreak }},它替換字符串中全部的「\n」爲<br />,新造成的新行使用段落標籤<p></p>包含。
    • 例如, "Joel\nis a slug"會被轉換爲 <p>Joel<br />is a slug</p>

date日期

  • 功能:
    根據給定格式,對一個date變量進行格式化。
  • 語法:
    {{ value|date:"D d M Y" }}
    • 也能夠不使用格式字符串,{{ value|date }}
  • 若是value是datetime對象
    如,datetime.datetime.now(),將輸出字符串'Web 09 Jan 2008'。
  • 傳遞的時間格式也能夠是預約義的格式
    • DATE_FORMAT
    • DATETIME_FORMAT
    • SHORT_DATE_FORMAT
    • SHORT_DATET
    • 預約義的格式根於語言環境不一樣而有所不一樣。
      這裏寫圖片描述
  • 示例效果:

這裏使用datetime模塊中的datetime.now()函數返回時間元組,將時間元組賦值給變量value;date過濾器不使用參數,採用默認參數。函數

# views.py文件中
def filter_Test(request, value):
    # 參數value
    from datetime import datetime
    value = datetime.now()
    return render(request, 'filterTest.html', {'value': value})

這裏寫圖片描述

default默認

dictsort字典排序

  • 功能:
    接收一個字典列表,並返回按參數中給出的鍵排序後的列表;
  • 語法:
    • {{ value|dictsort:'key' }}
#若是value爲
[
    {'name': 'zed', 'age': 19},
    {'name': 'amy', 'age': 22},
    {'name': 'joe', 'age': 31},
]
# 則通過dictsort根據鍵name排序後爲
# {{ value|dictsort:'name' }}
[
    {'name': 'amy', 'age': 22},
    {'name': 'joe', 'age': 31},
    {'name': 'zed', 'age': 19},
]
  • 示例效果
# 在views.py文件中
## 內置過濾器dictsort測試專用
def filter_Test(request, value):
    # 參數value,傳值給語法中的value
    value = [
    {'name': 'zed', 'age': 19},
    {'name': 'amy', 'age': 22},
    {'name': 'joe', 'age': 31},
]
    return render(request, 'filterTest.html', {'value': value})
  • 示例效果:

這裏寫圖片描述

能夠看出,字典列表已經根據name鍵排序。

dictsortreversed字典逆排序

  • 功能:
    接收一個字典列表,並返回按照參數中給出的鍵按相反順序排序的列表;這與上面的過濾器徹底相同,但返回的值將是相反的順序。
  • 語法:
    • {{ value|dictsortreversed:'key' }}
#若是value爲
[
    {'name': 'zed', 'age': 19},
    {'name': 'amy', 'age': 22},
    {'name': 'joe', 'age': 31},
]
# 則通過disort根據鍵name排序後爲
# {{ value|dictsortreversed:'name' }}
[
    {'name': 'zed', 'age': 19},
    {'name': 'joe', 'age': 31},
    {'name': 'amy', 'age': 22},
]
  • 示例效果:
    前面使用name,這裏使用age

這裏寫圖片描述

從結果上看,字典列表按照age鍵進行逆排序。

center字符串居中

  • 功能:
    在給定字符串寬度中,讓字符串居中顯示;
  • 語法:
    • {{ value|center:'width' }}
    • 例如:
      {{ "walt"|center:'10' }};則結果爲
      "☐☐☐walt☐☐☐",☐爲空格。
  • 示例效果:

這裏寫圖片描述

  • 拓展:
    此外還有ljust左對齊和rjust右對齊方法,相似center。

escape轉義用於HTML的字符代碼

  • 功能:
    將HTML能識別到的符號轉換爲HTML字符代碼。
  • 語法:
    {{ value|escape }}
  • 該部分未實驗成功,待更新。

escapejs轉義用於JavaScript字符串的字符

  • 功能:
    轉義用於JavaScript字符串的字符。雖然這在HTML中是不安全的,但能夠確保在使用模板生成JavaScript/JSON時避免語法錯誤。
  • 語法:
    {{ value|escapejs }}

  • 示例效果:

這裏寫圖片描述

floatformat格式化顯示浮點數

  • 功能:
    根據參數控制浮點數的格式化顯示,捨去位數採用四捨五入。
  • 語法:
    • {{ value|floatformat:dotWidth }}
    • 參數dotWidth指定了浮點數顯示的位數;
    • dotWidth默認爲-1,其中負號表示當value小數點後都是0時,只顯示整數部分;1表示當value小數點後有至少1位非零數時,只保留1位小數;
    • dotWidth=num,且num>0,其中表示無論value小數點後有沒有非零數,保留num位小數;
    • dotWidth=num,且num<0,其中負號表示當value小數點後都是0時,只顯示整數部分;1表示當value小數點後有至少1位非零數時,保留num位小數。
  • 示例效果:
    浮點數的小數點後全是0

這裏寫圖片描述
浮點數的小數點後有非零值

這裏寫圖片描述

safe安全模式

  • 功能:
    將字符串標記爲在輸出以前不須要進一步的HTML轉義。當自動轉義關閉時,此過濾器不起做用。
  • 語法:
    {{ value|safe }}
  • 示例效果:

這裏寫圖片描述

總結
  1. 本文完整項目文件代碼下載地址: 完整示例
  2. Django完整內置過濾器幫助文檔:Django內置過濾器完整
  3. 參考文獻:Django 中文文檔 1.8
  4. 能力有限,歡迎指錯交流;
相關文章
相關標籤/搜索