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 | floatformat:3 }} 34.232 34.00000 {{ value | floatformat:3 }} 34.000 34.26000 {{ value | floatformat:3 }} 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&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>