Django內置模版過濾器

Django內置過濾器總覽

能夠查詢下表來總覽Django的內置過濾器:javascript

過濾器 說明
add 加法
addslashes 添加斜槓
capfirst 首字母大寫
center 文本居中
cut 切除字符
date 日期格式化
default 設置默認值
default_if_none 爲None設置默認值
dictsort 字典排序
dictsortreversed 字典反向排序
divisibleby 整除判斷
escape 轉義
escapejs 轉義js代碼
filesizeformat 文件尺寸人性化顯示
first 第一個元素
floatformat 浮點數格式化
force_escape 強制馬上轉義
get_digit 獲取數字
iriencode 轉換IRI
join 字符列表連接
last 最後一個
length 長度
length_is 長度等於
linebreaks 行轉換
linebreaksbr 行轉換
linenumbers 行號
ljust 左對齊
lower 小寫
make_list 分割成字符列表
phone2numeric 電話號碼
pluralize 複數形式
pprint 調試
random 隨機獲取
rjust 右對齊
safe 安全確認
safeseq 列表安全確認
slice 切片
slugify 轉換成ASCII
stringformat 字符串格式化
striptags 去除HTML中的標籤
time 時間格式化
timesince 從什麼時候開始
timeuntil 到什麼時候多久
title 全部單詞首字母大寫
truncatechars 截斷字符
truncatechars_html 截斷字符
truncatewords 截斷單詞
truncatewords_html 截斷單詞
unordered_list 無序列表
upper 大寫
urlencode 轉義url
urlize url轉成可點擊的連接
urlizetrunc urlize的截斷方式
wordcount 單詞計數
wordwrap 單詞包裹
yesno 將True,False和None,映射成字符串‘yes’,‘no’,‘maybe’

爲模版過濾器提供參數的方式是:過濾器後加個冒號,再緊跟參數,中間不能有空格!css

目前只能爲過濾器最多提供一個參數!html

1. add

把add後的參數加給value。像這樣:java

{{ value|add:"2" }}

若是value爲 4,則會輸出6.git

過濾器首先會強制把兩個值轉換成Int類型。 若是強制轉換失敗, 它會試圖使用各類方式把兩個值相加。django

對於下面的例子:api

{{ first|add:second }}

若是first是[1, 2, 3],second是[4, 5, 6], 將會輸出[1, 2, 3, 4, 5, 6].安全

2. addslashes

在引號前面加上斜杆。經常使用於在CSV中轉義字符串。像這樣:dom

{{ value|addslashes }}

若是value是"I'm using Django", 輸出將變成 "I\'m using Django".post

3. capfirst

大寫變量的第一個字母。 若是第一個字符不是字母,該過濾器將不會生效。

{{ value|capfirst }}

若是value是"django", 輸出將變成"Django"。

4. center

在給定的寬度範圍內居中.

"{{ value|center:"15" }}" 

若是value是"Django",輸出將是Django

5. cut

移除value中全部的與給定參數相同的字符串。

{{ value|cut:" " }}

若是value爲「String with spaces」,輸出將爲"Stringwithspaces"。

6. date

根據給定格式對一個日期變量進行格式化。

可用的格式字符串:

格式化字符 描述 示例輸出
a 'a.m.'或'p.m.' 'a.m.'
A 'AM'或'PM' 'AM'
b 月份,文字形式,3個字母,小寫。 「jan」
B 未實現。  
c ISO 8601格式 2008-01-02T10:30:00.000123+02:00
d 月的日子,帶前導零的2位數字。 '01'到'31'
D 周幾的文字表述形式,3個字母。 'Fri'
e 時區名稱 '','GMT','-500','US/Eastern'等
E 月份,分地區。  
f 時間 '1','1:30'
F 月,文字形式。 'January'
g 12小時格式,無前導零。 '1'到'12'
G 24小時格式,無前導零。 '0'到'23'
h 12小時格式。 '01'到'12'
H 24小時格式。 '00'到'23'
i 分鐘 '00'到'59'
I 夏令時間,不管是否生效。 '1'或'0'
j 沒有前導零的月份的日子。 '1'到'31'
l 星期幾,完整英文名 'Friday'
L 布爾值是不是一個閏年。 True或False
m 月,2位數字帶前導零。 '01'到'12'
M 月,文字,3個字母。 「Jan」
n 月無前導零。 '1'到'12'
N 美聯社風格的月份縮寫。 'Jan.','Feb.','March','May'
o ISO-8601周編號 '1999'
O 與格林威治時間的差,單位小時。 '+0200'
P 時間爲12小時 '1 am','1:30 pm','midnight','noon','12:30 pm'>
r RFC 5322格式化日期。 'Thu, 21 Dec 2000 16:01:07 +0200'
s 秒,帶前導零的2位數字。 '00'到'59'
S 一個月的英文序數後綴,2個字符。 'st','nd','rd'或'th'
t 給定月份的天數。 28 to 31
T 本機的時區。 'EST','MDT'
u 微秒。 000000 to 999999
U 自Unix Epoch以來的秒數(1970年1月1日00:00:00 UTC)。  
w 星期幾,數字無前導零。 '0'(星期日)至'6'(星期六)
W ISO-8601週數,週數從星期一開始。 1,53
y 年份,2位數字。 '99'
Y 年,4位數。 '1999'
z 一年中的日子 0到365
Z 時區偏移量,單位爲秒。 -43200到43200

範例:

{{ value|date:"D d M Y" }}

若是value是一個datetime對象,好比datetime.datetime.now(),輸出將是字符串'Wed 09 Jan 2008'。

能夠將date與time過濾器結合使用,以呈現datetime值的完整表示形式。 例如。:

{{ value|date:"D d M Y" }} {{ value|time:"H:i" }}

7. default

爲變量提供一個默認值。

{{ value|default:"nothing" }}

8. default_if_none

若是(且僅當)value爲None,則使用給定的默認值。

{{ value|default_if_none:"nothing" }}

9. dictsort

接受一個包含字典元素的列表,並返回按參數中給出的鍵排序後的列表。

{{ value|dictsort:"name" }}

若是value爲:

[
    {'name': 'zed', 'age': 19},
    {'name': 'amy', 'age': 22},
    {'name': 'joe', 'age': 31},
]

那麼輸出將是:

[
    {'name': 'amy', 'age': 22},
    {'name': 'joe', 'age': 31},
    {'name': 'zed', 'age': 19},
]

還也能夠作更復雜的事情,如:

{% for book in books|dictsort:"author.age" %}  * {{ book.title }} ({{ book.author.name }}) {% endfor %}

若是books是:

[
    {'title': '1984', 'author': {'name': 'George', 'age': 45}},
    {'title': 'Timequake', 'author': {'name': 'Kurt', 'age': 75}},
    {'title': 'Alice', 'author': {'name': 'Lewis', 'age': 33}},
]

那麼輸出將是:

* Alice (Lewis)
* 1984 (George)
* Timequake (Kurt)

dictsort也能夠按指定索引對多維列表進行排序,像這樣:

{{ value|dictsort:0 }}

若是value爲:

[
    ('a', '42'),
    ('c', 'string'),
    ('b', 'foo'),
]

那麼輸出將是:

[
    ('a', '42'),
    ('b', 'foo'),
    ('c', 'string'),
]

必須提供整數索引,不能是字符串。 如下產生空輸出:

{{ values|dictsort:"0" }}

10. dictsortreversed

前面過濾器的反序功能。

11. divisibleby

若是value能夠被參數整除,則返回True。

{{ value|divisibleby:"3" }}

若是value是21,則輸出True。

12. escape

轉義字符串的HTML。

轉義僅在字符串輸出時應用,所以在連接的過濾器序列中escape的位置可有可無,就像它是最後一個過濾器。 若是要當即應用轉義,請使用force_escape過濾器。

13. escapejs

轉義用於JavaScript字符串的字符。 確保在使用模板生成JavaScript / JSON時避免語法錯誤。

{{ value|escapejs }}

若是value爲testing\r\njavascript \'string" <b>escaping</b>,輸出將爲testing\\u000D\\u000Ajavascript \\u0027string\\u0022 \\u003Cb\\u003Eescaping\\u003C/b\\u003E

14. filesizeformat

格式化爲直觀的文件大小形式(即'13 KB', '4.1 MB', '102 bytes'等)。

{{ value|filesizeformat }}

若是value爲123456789,輸出將是117.7 MB。

15. first

返回列表中的第一項。

{{ value|first }}

若是value是列表['a', 'b', 'c'] ,輸出將爲'a'。

16. floatformat

當不使用參數時,將浮點數舍入到小數點後一位,但前提是要顯示小數部分。 像這樣:

value           模板語法                輸出
34.23234 {{ value | floatformat }} 34.2 34.00000 {{ value | floatformat }} 34 34.26000 {{ value | floatformat }} 34.3 

若是與數字整數參數一塊兒使用,將數字四捨五入爲小數位數。 像這樣:

value           模板語法                輸出
34.23234 {{ value | floatformat3 }} 34.232 34.00000 {{ value | floatformat3 }} 34.000 34.26000 {{ value | floatformat3 }} 34.260 

特別有用的是傳遞0(零)做爲參數,它將使float浮動到最接近的整數。

value           模板語法                輸出
34.23234 {{ value | floatformat:「0}} 34 34.00000 {{ value | floatformat:「0}} 34 39.56000 {{ value | floatformat:「0}} 40 

若是傳遞給floatformat的參數爲負,則會將一個數字四捨五入到小數點後的位置,但前提是要顯示一個小數部分。 像這樣:

value           模板語法                輸出
34.23234 {{ value | floatformat:「 - 3}} 34.232 34.00000 {{ value | floatformat:「 - 3}} 34 34.26000 {{ value | floatformat:「 - 3}} 34.260 

17. force_escape

當即轉義HTML字符串。

18. get_digit

給定一個整數,返回所請求的數字,1表示最右邊的數字,2表示第二個最右邊的數字,以此類推。

{{ value|get_digit:"2" }}

若是value爲123456789,則輸出8。

19. iriencode

將IRI(國際化資源標識符)轉換爲適合包含在URL中的字符串。

{{ value|iriencode }}

若是value是?test=1&me=2,輸出則是?test=1&amp;me=2

20. join

使用字符串鏈接列表,相似Python的str.join(list)

{{ value|join:" // " }}

若是value是列表['a', 'b', 'c'] ,輸出爲a // b // c

21. last

返回列表中的最後一個項目。相似first過濾器。

{{ value|last }}

22. length

返回對象的長度。 這適用於字符串和列表。

{{ value|length }}

若是value是['a', 'b', 'c', 'd']或"abcd",輸出將爲4。

對於未定義的變量,過濾器返回0。

23. length_is

若是對象的長度等於參數值,則返回True,不然返回False。

{{ value|length_is:"4" }}

若是value是['a', 'b', 'c', 'd']或"abcd",輸出將爲True。

24. linebreaks

替換純文本中的換行符爲<p>標籤。

{{ value|linebreaks }}

若是value是Joel\nis a slug,輸出將爲<p>Joel<br />is a slug</p>

25. linebreaksbr

替換純文本中的換行符爲<br />標籤。

{{ value|linebreaksbr }}

若是value是Joel\nis a slug,輸出將爲Joel<br />is a slug

26. linenumbers

顯示帶行號的文本。

{{ value|linenumbers }}

若是value爲:

one
two
three

輸出將是:

1. one
2. two
3. three

27. ljust

給定寬度下左對齊。

"{{ value|ljust:"10" }}" 

若是value爲Django,則輸出爲Django

28. lower

將字符串轉換爲所有小寫。

{{ value|lower }}

29. make_list

將對象轉換爲字符的列表。對於字符串,直接拆分爲單個字符的列表。對於整數,在建立列表以前將參數強制轉換爲unicode字符串。

{{ value|make_list }}

若是value是字符串"Joel",輸出將是列表['J', 'o' , 'e', 'l']。

若是value爲123,輸出爲列表['1', '2', '3']。

30. phone2numeric

將電話號碼(可能包含字母)轉換爲其等效數字。

{{ value|phone2numeric }}

若是value爲800-COLLECT,輸出將爲800-2655328。

31. pluralize

若是值不是1,則返回一個複數形式,一般在後面添加's'表示。

例如:

You have {{ num_messages }} message{{ num_messages|pluralize }}. 

若是num_messages是1,則輸出爲You have 1 message。 若是num_messages是2,輸出爲You have 2 messages

另外若是須要的不是's'後綴的話, 能夠提供一個備選的參數給過濾器:

You have {{ num_walruses }} walrus{{ num_walruses|pluralize:"es" }}. 

對於非通常形式的複數,能夠同時指定單複數形式,用逗號隔開。例如:

You have {{ num_cherries }} cherr{{ num_cherries|pluralize:"y,ies" }}. 

32. pprint

用於調試的過濾器。

33. random

返回給定列表中的隨機項。

{{ value|random }}

34. rjust

右對齊給定寬度字段中的值。

"{{ value|rjust:"10" }}" 

35. safe

將字符串標記爲安全,不須要轉義。再也不贅述。

36. safeseq

將safe過濾器應用於序列的每一個元素。 與對序列進行其餘過濾操做(例如join)一塊兒使用時很是有用。

{{ some_list|safeseq|join:", " }}

在這種狀況下,不能直接使用safe過濾器,由於它首先將變量轉換爲字符串,而不是使用序列的各個元素。

37. slice

返回列表的一部分。也就是切片,與Python的列表切片相同的語法。

{{ some_list|slice:":2" }}

若是some_list是['a', 'b', 'c'] ,輸出將爲['a', 'b']。

38. slugify

轉換爲ASCII。空格轉換爲連字符。刪除不是字母數字,下劃線或連字符的字符。轉換爲小寫。還會去除前導和尾隨空格。

{{ value|slugify }}

若是value是Joel is a slug,輸出爲joel-is-a-slug

39. stringformat

根據參數,格式化變量。

{{ value|stringformat:"E" }}

若是value爲10,輸出將爲1.000000E+01。

40. striptags

儘量的去除HTML中的標籤。

{{ value|striptags }}

若是value是<b>Joel</b> <button>is</button> a <span>slug</span>,輸出Joel is a slug

41. time

根據給定的格式,格式化時間。給定格式能夠是預約義的TIME_FORMAT,也能夠是與date過濾器相同的自定義格式。

{{ value|time:"H:i" }}

若是value等於datetime.datetime.now(),則輸出字符串01:23

time過濾器只接受格式字符串中與時間相關的參數,而不是日期。若是須要格式化date值,請改用date過濾器。

42. timesince

將日期格式設爲自該日期起的時間(例如,「4天,6小時」)。

採用一個可選參數,它是一個包含用做比較點的日期的變量。例如,若是blog_date是表示2006年6月1日午夜的日期實例,而且comment_date是2006年6月1日08:00,則如下將返回「8 hours」:

{{ blog_date|timesince:comment_date }}

43. timeuntil

相似於timesince,它測量從如今開始直到給定日期或日期時間的時間。例如,若是今天是2006年6月1日,而conference_date是2006年6月29日,則{{ conference_date | timeuntil }}將返回「4 weeks」。

可選參數是一個包含用做比較點的日期變量。若是from_date爲2006年6月22日,則如下內容將返回「1 weeks」:

{{ conference_date|timeuntil:from_date }}

44. title

將全部單詞的首字母大寫,其它字母小寫。

{{ value|title }}

若是value爲「my FIRST post」,輸出將爲「My First Post」。

45. truncatechars

若是字符串包含的字符總個數多於指定的字符數量,那麼會被截斷掉後面的部分。截斷的字符串將以「...」結尾。

{{ value|truncatechars:9 }}

若是value是Joel is a slug,輸出爲Joel i...

46. truncatechars_html

相似於truncatechars,可是會保留HTML標記。

{{ value|truncatechars_html:9 }}

若是value是<p>Joel is a slug</p>,輸出<p>Joel i...</p>

47. truncatewords

在必定數量的字數後截斷字符串。與truncatechars不一樣的是,這個以字的個數計數,而不是字符計數。

{{ value|truncatewords:2 }}

若是value 是Joel is a slug, 輸出爲Joel is ...

字符串中的換行符將被刪除。

48. truncatewords_html

相似於truncatewords,可是保留HTML標記。

{{ value|truncatewords_html:2 }}

HTML內容中的換行符將保留。

49. unordered_list

接收一個嵌套的列表,返回一個HTML的無序列表,但不包含開始和結束的<ul>標籤。

例如,若是var 包含['States', ['Kansas', ['Lawrence', 'Topeka'], 'Illinois']], 那麼{{ var|unordered_list }}將返回:

<li>States
<ul> <li>Kansas <ul> <li>Lawrence</li> <li>Topeka</li> </ul> </li> <li>Illinois</li> </ul> </li> 

50. upper

將字符串轉換爲所有大寫的形式:

{{ value|upper }}

51. urlencode

轉義要在URL中使用的值。

{{ value|urlencode }}

若是value爲https://www.example.org/foo?a=b&c=d,輸出https%3A//www.example.org/foo%3Fa%3Db%26c%3Dd

52. urlize

將文字中的網址和電子郵件地址轉換爲可點擊的連接。

該模板標籤適用於前綴爲http://https://的連接,或者www

由urlize生成的連接會向其中添加rel="nofollow"屬性。

{{ value|urlize }}

若是value是Check out www.djangoproject.com,輸出Check out <a href="http://www.djangoproject.com" rel="nofollow">www.djangoproject.com</a>

除了超級連接以外,urlize也會將電子郵件地址轉換爲郵件地址連接。 若是value是Send questions to foo@example.com,輸出將是Send questions to <a href="mailto:foo@example.com">foo@example.com</a>

53. urlizetrunc

將網址和電子郵件地址轉換爲可點擊的連接,就像urlize,但截斷長度超過給定字符數限制的網址。

{{ value|urlizetrunc:15 }}

若是value是Check out www.djangoproject.com,將輸出Check out <a href="http://www.djangoproject.com" rel="nofollow">www.djangopr...</a>'.

與urlize同樣,此過濾器應僅應用於純文本。

54. wordcount

返回單詞的個數。

{{ value|wordcount }}

若是value是Joel is a slug,輸出4。

55. wordwrap

以指定的行長度,換行單詞。

{{ value|wordwrap:5 }}

若是value是Joel is a slug,輸出爲:

Joel
is a
slug

56. yesno

將True,False和None,映射成字符串‘yes’,‘no’,‘maybe’。

{{ value|yesno:"yeah,no,maybe" }}

國際化標籤和過濾器

Django還提供了一些模板標籤和過濾器,用以控制模板中國際化的每一個方面。它們容許對翻譯,格式化和時區轉換進行粒度控制。

1. i18n

此標籤容許在模板中指定可翻譯文本。要啓用它,請將USE_I18N設置爲True,而後加載{% load i18n %}

2. l10n

此標籤提供對模板的本地化控制,只須要使用{% load l10n %}。一般將USE_L10N設置爲True,以便本地化默認處於活動狀態。

3. tz

此標籤對模板中的時區進行控制。 像l10n,只須要使用{% load tz },但一般還會將USE_TZ設置爲True,以便默認狀況下轉換爲本地時間。

其餘標籤和過濾器庫

Django附帶了一些其餘模板標籤,必須在INSTALLED_APPS設置中顯式啓用,並在模板中啓用{% load %}標記。

1. django.contrib.humanize

一組Django模板過濾器,用於向數據添加「人性化」,更加可讀。

2. static

static標籤用於連接保存在STATIC_ROOT中的靜態文件。例如:

{% load static %}
<img src="{% static "images/hi.jpg" %}" alt="Hi!" />

還可使用變量:

{% load static %}
<link rel="stylesheet" href="{% static user_stylesheet %}" type="text/css" media="screen" />

還能夠像下面這麼使用:

{% load static %} {% static "images/hi.jpg" as myphoto %} <img src="{{ myphoto }}"></img>
相關文章
相關標籤/搜索