Django内建模版标签和过滤器
第四章列出了許多的常用內建模板標簽和過濾器。然而,Django自帶了更多的內建模板標簽及過濾器。這章附錄列出了截止到編寫本書時,Django所包含的各個內建模板標簽和過濾器,但是,新的標簽是會被定期地加入的。
對于提供的標簽和過濾器,最好的參考就是直接進入你的管理界面。Django的管理界面包含了一份針對當前站點的所有標簽和過濾器的完整參考。想看到它的話,進入你的管理界面,單擊右上角的Documentation(文檔)鏈接。
內建文檔中的“標簽和過濾器”小節(jié)闡述了所有內建標簽(事實上,本附錄中的標簽和過濾器參考都直接來自那里)和所有可用的定制標簽庫。
考慮到那些沒有管理站點可用的人們,這里提供了常用的標簽和過濾器的參考。由于Django是可高度定制的,管理界面中的那些可用的標簽和過濾器的參考可認為是最可信的。
內建標簽參考
block
定義一個能被子模板覆蓋的區(qū)塊。參見第四章“模板繼承”一節(jié)查看更多信息。
comment
模板引擎會忽略掉?{% comment %}?和?{% endcomment %}?之間的所有內容。
cycle
輪流使用標簽給出的字符串列表中的值。
在一個循環(huán)內,輪流使用給定的字符串列表元素:
{% for o in some_list %} <tr class="{% cycle row1,row2 %}"> ... </tr> {% endfor %}在循環(huán)外,在你第一次調用時,給這些字符串值定義一個不重復的名字,以后每次只需使用這個名字就行了:
<tr class="{% cycle row1,row2,row3 as rowcolors %}">...</tr> <tr class="{% cycle rowcolors %}">...</tr> <tr class="{% cycle rowcolors %}">...</tr>你可以使用任意數(shù)量的用逗號分隔的值。注意不要在值與值之間有空格,只是一個逗號。
debug
輸出完整的調試信息,包括當前的上下文及導入的模塊信息。
extends
標記當前模板擴展一個父模板。
這個標簽有兩種用法:
?
{% extends "base.html" %}?(帶引號) 直接使用要擴展的父模板的名字?"base.html"?。
?
{% extends variable %}?用變量?variable?的值來指定父模板。如果變量是一個字符串,Django會把字符串的值當作父模板的文件名。如果變量是一個?Template?對象,Django會把這個對象當作父模板。
?
參看第四章更多應用實例。
filter
通過可變過濾器過濾變量的內容。
過濾器也可以相互傳輸,它們也可以有參數(shù),就像變量的語法一樣。
看這個用法實例:
{% filter escape|lower %} This text will be HTML-escaped, and will appear in all lowercase. {% endfilter %}
firstof
輸出傳入的第一個不是?False?的變量,如果被傳遞變量都為?False?,則什么也不輸出。
看這個用法實例:
{% firstof var1 var2 var3 %}這等同于如下內容:
{% if var1 %} {{ var1 }} {% else %}{% if var2 %} {{ var2 }} {% else %}{% if var3 %} {{ var3 }} {% endif %}{% endif %}{% endif %}
for
輪詢數(shù)組中的每一元素。例如顯示一個指定的運動員的序列?athlete_list?:
<ul> {% for athlete in athlete_list %} <li>{{ athlete.name }}</li> {% endfor %} </ul>你也可以逆向遍歷一個列表?{% for obj in list reversed %}?。
for?循環(huán)設置了許多循環(huán)中可用的變量(見表F-1)。
| forloop.counter | 當前循環(huán)次數(shù)(索引最小為1)。 |
| forloop.counter0 | 當前循環(huán)次數(shù) (索引最小為0)。 |
| forloop.revcounter | 剩余循環(huán)次數(shù) (索引最小為1)。 |
| forloop.revcounter0 | 剩余循環(huán)次數(shù) (索引最小為0)。 |
| forloop.first | 第一次循環(huán)時為?True?。 |
| forloop.last | 最后一次循環(huán)時為?True?。 |
| forloop.parentloop | 用于嵌套循環(huán),表示當前循環(huán)外層的循環(huán)。 |
if
{% if %}?標簽測試一個變量,若變量為真(即其存在、非空,且不是一個為假的布爾值),區(qū)塊中的內容就會被輸出:
{% if athlete_list %} Number of athletes: {{ athlete_list|length }} {% else %} No athletes. {% endif %}若?athlete_list?非空,變量?{{ athlete_list|length }}?就會顯示運動員的數(shù)量。
正如你所見,?if?標簽有可選的?{% else %}?從句,若條件不成立則顯示該從句。
if?語句可使用?and?、?or?和?not?來測試變量或者對給定的變量取反:
{% if athlete_list and coach_list %} Both athletes and coaches are available. {% endif %} {% if not athlete_list %} There are no athletes. {% endif %} {% if athlete_list or coach_list %} There are some athletes or some coaches. {% endif %} {% if not athlete_list or coach_list %} There are no athletes or there are some coaches (OK, so writing English translations of Boolean logic sounds stupid; it's not our fault). {% endif %} {% if athlete_list and not coach_list %} There are some athletes and absolutely no coaches. {% endif %}不允許?and?和?or?同時出現(xiàn)在一個?if?語句中,因為這樣會有邏輯上的問題。例如這樣是有語病的:
{% if athlete_list and coach_list or cheerleader_list %}如果你需要同時使用?and?和?or?來實現(xiàn)較高級的邏輯,可以用嵌套的?if?標簽來實現(xiàn)。例如:
{% if athlete_list %} {% if coach_list or cheerleader_list %} We have athletes, and either coaches or cheerleaders! {% endif %} {% endif %}重復使用同一邏輯符是可以的。例如這樣是正確的:
{% if athlete_list or coach_list or parent_list or teacher_list %}
ifchanged
檢查循環(huán)中一個值從最近一次重復其是否改變。
ifchanged?語句塊用于循環(huán)中,其作用有兩個:
?
它會把要渲染的內容與前一次作比較,發(fā)生變化時才顯示它。例如,下面要顯示一個日期列表,只有月份改變時才會顯示它:
?
<h1>Archive for {{ year }}</h1> {% for date in days %} {% ifchanged %}<h3>{{ date|date:"F" }}</h3>{% endifchanged %} <a href="{{ date|date:"M/d"|lower }}/">{{ date|date:"j" }}</a> {% endfor %}?
如果給的是一個變量,就會檢查它是否發(fā)生改變。
?
{% for date in days %} {% ifchanged date.date %} {{ date.date }} {% endifchanged %} {% ifchanged date.hour date.date %} {{ date.hour }} {% endifchanged %} {% endfor %}?
前面那個例子中日期每次發(fā)生變化時就會顯示出來,但只有小時和日期都發(fā)生變化時才會顯示小時。
ifequal
如果兩個參數(shù)相等,就輸出該區(qū)塊的內容。
舉個例子:
{% ifequal user.id comment.user_id %} ... {% endifequal %}正如?{% if %}?標簽一樣,?{% else %}?語句是可選的。
參數(shù)也可以是硬編碼的字符串,所以下面這種寫法是正確的:
{% ifequal user.username "adrian" %} ... {% endifequal %}可以用來比較的參數(shù)只限于模板變量或者字符串(實際上整數(shù)和小數(shù)也是可以的——譯注),你不能檢查諸如?True?or?False?等Python對象是否相等。如果你需要測試某值的真假,可以用?if?標簽。
ifnotequal
和?ifequal?類似,不過它是用來測試兩個參數(shù)是 不 相等的。
include
加載一個模板,并用當前上下文對它進行渲染,這是在一個模板中包含其他模板的一種方法。
模板名可以是一個變量或者是一個硬編碼(引號引起來的)的字符串,引號可以是單引號或者雙引號。
這個例子包含了?"foo/bar.html"?模板的內容:
{% include "foo/bar.html" %}這個例子包含了名字由變量?template_name?指定的模板的內容:
{% include template_name %}
load
讀入一個自定義的模板庫。第十章里有關于自定義模板的相關信息資料
now
根據(jù)給定的格式字符串顯示當前日期。
這個標簽來源于PHP中的?date()?函數(shù)(?http://php.net/date?),并使用與其相同的格式語法,但是Django對其做了擴展。
表F-2顯示了可用的格式字符串。
| a | 'a.m.'?或者?'p.m.'?。(這與PHP中的輸出略有不同,因為為了匹配美聯(lián)社風格,它包含了句點。 | 'a.m.' |
| A | 'AM'?或者?'PM'?。 | 'AM' |
| b | 月份,文字式的,三個字母,小寫。 | 'jan' |
| d | 一月的第幾天,兩位數(shù)字,帶前導零。 | '01'?到?'31' |
| D | 一周的第幾天,文字式的,三個字母。 | 'Fri' |
| f | 時間,12小時制的小時和分鐘數(shù),如果分鐘數(shù)為零則不顯示。 | '1'?,?'1:30' |
| F | 月份,文字式的,全名。 | 'January' |
| g | 小時,12小時制,沒有前導零。 | '1'?到?'12' |
| G | 小時,24小時制,沒有前導零。 | '0'?到?'23' |
| h | 小時,12小時制。 | '01'?到?'12' |
| H | 小時,24小時制。 | '00'?到?'23' |
| i | 分鐘。 | '00'?到?'59' |
| j | 一月的第幾天,不帶前導零。 | '1'?到?'31' |
| l | 一周的第幾天,文字式的,全名。 | 'Friday' |
| L | 是否為閏年的布爾值。 | True?到?False |
| m | 月份,兩位數(shù)字,帶前導零。 | '01'?到?'12' |
| M | 月份,文字式的,三個字母。 | 'Jan' |
| n | 月份,沒有前導零。 | '1'?到?'12' |
| N | 美聯(lián)社風格的月份縮寫。 | 'Jan.'?,?'Feb.'?,'March'?,?'May' |
| O | 與格林威治標準時間的時間差(以小時計)。 | '+0200' |
| P | 時間,12小時制的小時分鐘數(shù)以及a.m./p.m.,分鐘數(shù)如果為零則不顯示,用字符串表示特殊時間點,如?'midnight'?和?'noon'?。 | '1 a.m.'?,?'1:30 p.m.'?,'midnight'?,'noon'?,?'12:30 p.m.' |
| r | RFC 822 格式的日期。 | 'Thu, 21 Dec 2000 16:01:07 +0200' |
| s | 秒數(shù),兩位數(shù)字,帶前導零。 | '00'?到?'59' |
| S | 英語序數(shù)后綴,用于表示一個月的第幾天,兩個字母。 | 'st'?,?'nd'?,?'rd'到?'th' |
| t | 指定月份的天數(shù)。 | 28?到?31 |
| T | 本機的時區(qū)。 | 'EST'?,?'MDT' |
| w | 一周的第幾天,數(shù)字,帶前導零。 | '0'?(Sunday) 到'6'?(Saturday) |
| W | ISO-8601 一年中的第幾周,一周從星期一開始。 | 1?,?23 |
| y | 年份,兩位數(shù)字。 | '99' |
| Y | 年份,四位數(shù)字。 | '1999' |
| z | 一年的第幾天。 | 0?到?365 |
| Z | 以秒計的時區(qū)偏移量,這個偏移量對于UTC西部時區(qū)總是負數(shù),對于UTC東部時區(qū)總是正數(shù)。 | -43200?到?43200 |
看這個例子:
It is {% now "jS F Y H:i" %}記住,如果你想用一個字符串的原始值的話,你可以用反斜線進行轉義。在這個例子中,f被用反斜線轉義了,如果不轉義的話f就是顯示時間的格式字符串。o不用轉義,因為它本來就不是一個格式字母。
It is the {% now "jS o\f F" %}這樣就會顯示成“It is the 4th of September”。
regroup
把一列相似的對象根據(jù)某一個共有的屬性重新分組。
要解釋清這個復雜的標簽,最好來舉個例子。比如,?people?是包含?Person?對象的一個列表, 這個對象擁有?first_name?、?last_name?和?gender?屬性,你想這樣顯示這個列表:
* Male: * George Bush * Bill Clinton * Female: * Margaret Thatcher * Condoleezza Rice * Unknown: * Pat Smith下面這段模板代碼就可以完成這個看起來很復雜的任務:
{% regroup people by gender as grouped %} <ul> {% for group in grouped %} <li>{{ group.grouper }} <ul> {% for item in group.list %} <li>{{ item }}</li> {% endfor %} </ul> </li> {% endfor %} </ul>如你所見,?{% regroup %}?構造了一個列表變量,列表中的每個對象都有?grouper?和?list?屬性。grouper?包含分組所依據(jù)的屬性,?list?包含一系列擁有共同的?grouper?屬性的對象。這樣?grouper?就會是?Male?、?Female?和?Unknown?,?list?就是屬于這幾種性別的人們。
記住,如果被分組的列表不是按照某一列排好序的話,你就不能用?{% regroup %}?在這一列上進行重新分組!就是說如果人的列表不是按照性別排好序的話,在用它之前就要先對它排序,即:
{% regroup people|dictsort:"gender" by gender as grouped %}
spaceless
去除HTML標簽之間的空白符號,包括制表符和換行符。
例如:
{% spaceless %} <p> <a href="foo/">Foo</a> </p> {% endspaceless %}返回結果如下:
<p><a href="foo/">Foo</a></p>僅僅 標簽 之間的空白符被刪掉,標簽和文本之間的空白符是不會被處理的。在下面這個例子中,Hello?兩邊的空白符是不會被截掉的:
{% spaceless %} <strong> Hello </strong> {% endspaceless %}
ssi
把一個指定的文件的內容輸出到頁面上。
像include標簽一樣,?{% ssi %}?會包含另外一個文件的內容,這個文件必須以絕對路徑指明:
{% ssi /home/html/ljworld.com/includes/right_generic.html %}如果指定了可選的parsed參數(shù)的話,包含進來的文件的內容會被當作模板代碼,并用當前的上下文來渲染:
{% ssi /home/html/ljworld.com/includes/right_generic.html parsed %}注意,如果你要使用?{% ssi %}?的話,為了安全起見,你必須在Django配置文件中定義ALLOWED_INCLUDE_ROOTS。
大多數(shù)情況下?{% include %}?比?{% ssi %}?更好用,?{% ssi %}?的存在通常是為了向后兼容。
templatetag
輸出組成模板標簽的語法字符。
模板系統(tǒng)沒有轉義的概念,所以要顯示一個組成模板標簽的字符的話,你必須使用?{% templatetag %}?標簽。
參數(shù)用來標明要顯示的字符(參見表F-3)。
| openblock | {% |
| closeblock | %} |
| openvariable | {{ |
| closevariable | }} |
| openbrace | { |
| closebrace | } |
| opencomment | {# |
| closecomment | #} |
url
根據(jù)所給視圖函數(shù)和可選參數(shù),返回一個絕對的URL(就是不帶域名的URL)。由于沒有在模板中對URL進行硬編碼,所以這種輸出鏈接的方法沒有違反DRY原則。
{% url path.to.some_view arg1,arg2,name1=value1 %}第一個變量是按package.package.module.function形式給出的指向一個view函數(shù)的路徑。那些可選的、用逗號分隔的附加參數(shù)被用做URL中的位置和關鍵詞變量。所有URLconf需要的參數(shù)都應該是存在的。
例如,假設你有一個view,app_name.client,它的URLconf包含一個client ID參數(shù)。URLconf對應行可能看起來像這樣:
('^client/(\d+)/$', 'app_name.client')如果這個應用的URLconf像下面一樣被包含在項目的URLconf里:
('^clients/', include('project_name.app_name.urls'))那么,在模板中,你可以像這樣創(chuàng)建一個指向那個view的link連接:
{% url app_name.client client.id %}模板標簽將輸出字符串/clients/client/123/
widthratio,寬度的比率
為了畫出長條圖,這個標籤計算一個給定值相對於最大值的比率,然後將這個比率給定一個常數(shù)
一些實例:
<img src="bar.gif" height="10" width="{% widthratio this_value max_value 100 %}" />If?this_value?is 175 and?max_value?is 200, the image in the preceding example will be 88 pixels wide (because 175/200 = .875; .875 * 100 = 87.5, which is rounded up to 88).
Built-in Filter Reference
add
例如:
{{ value|add:"5" }}參數(shù)與被處理數(shù)據(jù)相加的結果.
addslashes
例如:
{{ string|addslashes }}給敏感字符添加斜線(轉義). 舉例,要將一個字符串傳遞給 JavaScript 時.
capfirst
例如:
{{ string|capfirst }}將字符串的首字母大寫
center
例如:
{{ string|center:"50" }}在一個給定的長度讓字符串居中
cut
例如:
{{ string|cut:"spam" }}把給定字符串中包含的所有參數(shù)值刪除掉。
date
Example:
{{ value|date:"F j, Y" }}把一個date類型按照給定的格式輸出(與”now”標簽用法一樣)。
default
例如:
{{ value|default:"(N/A)" }}如果變量不存在,使用默認值
default_if_none
例如:
{{ value|default_if_none:"(N/A)" }}如果變量值為None,使用默認值
dictsort
例如:
{{ list|dictsort:"foo" }}接受一個字典列表,返回按給定參數(shù)的屬性排序后的列表.
dictsortreversed
例子:
{{ list|dictsortreversed:"foo" }}接受一個字典列表,返回按給定參數(shù)的屬性逆序排序后的列表
divisibleby
Example:
{% if value|divisibleby:"2" %} Even! {% else %} Odd! {% else %}如果值能夠被給定的參數(shù)整除的話,返回“True”。
escape
例如:
{{ string|escape }}按照以下的規(guī)則,轉義一個HTML字符串:
?
"&"?to?"&"
?
<?to?"<"
?
>?to?">"
?
'"'?(double quote) to?'"'
?
"'"?(single quote) to?'''
filesizeformat
Example:
{{ value|filesizeformat }}將值格式化為 ‘可讀性好的’ 文件大小(比如 ‘13 KB’, ‘4.1 MB’, ‘102bytes’ 等等).
first
Example:
{{ list|first }}返回列表中的第一個元素.
fix_ampersands
Example:
{{ string|fix_ampersands }}將 & 符號替換為 & 實體
floatformat
Examples:
{{ value|floatformat }} {{ value|floatformat:"2" }}將一個浮點數(shù)四舍五入到小數(shù)點后1位 — 如果根本沒有小數(shù),小數(shù)部分不會顯示.
?
36.123?gets converted to?36.1?.
?
36.15?gets converted to?36.2?.
?
36?gets converted to?36?.
?
如果使用同一個數(shù)字的整數(shù)參數(shù),“floatformat”輪數(shù),許多小數(shù)位:
?
36.1234?with floatformat:3 gets converted to?36.123?.
?
36?with floatformat:4 gets converted to?36.0000?.
?
If the argument passed to?floatformat?is negative, it will round a number to that many decimal places but only if theres a decimal part to be displayed:
?
36.1234?with floatformat:-3 gets converted to?36.123?.
?
36?with floatformat:-4 gets converted to?36?.
?
Using?floatformat?with no argument is equivalent to using?floatformat?with an argument of?-1?.
get_digit
Example:
{{ value|get_digit:"1" }}提供一個完整的數(shù), 返回該數(shù)中被請求的數(shù)字,其中 1 是最右邊的數(shù), 2 是從右邊數(shù)第二個數(shù)字等等. 若輸入值非法(若輸入或參數(shù)不是整數(shù), 或者參數(shù)小于1)則返回其原始值. 否則輸出就總是整數(shù).
join
例子:
{{ list|join:", " }}用一個字符串將一個列表連接起來,類似 Python 的 str.join(list).
length
例子:
{{ list|length }}返回對象的長度
length_is
Example:
{% if list|length_is:"3" %} ... {% endif %}若值的長度與參數(shù)相等,返回 True, 否則返回 False.
linebreaks
Example:
{{ string|linebreaks }}把換行符轉換成<p>和<br />標簽。
linebreaksbr
Example:
{{ string|linebreaksbr }}把每個新行轉換為”<br />”標簽
linenumbers
Example:
{{ string|linenumbers }}帶行號顯示文本
ljust
Example:
{{ string|ljust:"50" }}在給定寬度的域內將文本左對齊.
lower
Example:
{{ string|lower }}把一個給定的字符串轉換成小寫。
make_list
Example:
{% for i in number|make_list %} ... {% endfor %}將值轉化為一個列表.對一個整數(shù),它是一個數(shù)字的列表.對一個字符串,這是一個字符的列表
phone2numeric
Example:
{{ string|phone2numeric }}將一個電話號碼(可能包含字母)轉化等價的數(shù)字值.比如: ‘800-COLLECT’ 將被轉化為 ‘800-2655328’.
輸入不一定非是一個合法號碼. 它可以轉化任意字符串.
pluralize
Example:
The list has {{ list|length }} item{{ list|pluralize }}.如果值不是 1 的話返回 ‘s’ 用于 ‘1 vote’ vs. ‘2 votes’ 這種場合
Example:
You have {{ num_messages }} message{{ num_messages|pluralize }}.For words that require a suffix other than?'s'?, you can provide an alternate suffix as a parameter to the filter.
Example:
You have {{ num_walruses }} walrus{{ num_walrus|pluralize:"es" }}.For words that dont pluralize by simple suffix, you can specify both a singular and plural suffix, separated by a comma.
Example:
You have {{ num_cherries }} cherr{{ num_cherries|pluralize:"y,ies" }}.
pprint
Example:
{{ object|pprint }}pprint.pprint 和一個封裝器— 僅用于調試.
random
Example:
{{ list|random }}返回隨機的從列表中返回一個元素
removetags
Example:
{{ string|removetags:"br p div" }}從輸出中刪除單空格分隔的 [X]HTML標簽 列表
rjust
Example:
{{ string|rjust:"50" }}在給定寬度的域內將文本右對齊.
slice
Example:
{{ some_list|slice:":2" }}返回一個列表的片段
使用與 Python 的 list 相同的語法, 參閱http://diveintopython.org/native_data_types/lists.html#odbchelper.list.slice?以了解更詳細的信息.
slugify
Example:
{{ string|slugify }}轉化為小寫, 移去非單詞字符(字母數(shù)字和下劃線),將空白轉化為連字符,去除前后空白.
stringformat
Example:
{{ number|stringformat:"02i" }}根據(jù)給定參數(shù)(一個格式字符串)格式化一個變量, 這個格式字符串使用 Python 字符串格式化語法, 例外之處是 “%” 運算符被省略.
參閱?http://docs.python.org/lib/typesseq-strings.html?以了解 Python 格式字符串
striptags
Example:
{{ string|striptags }}過濾掉[X]HTML標簽.
time
Example:
{{ value|time:"P" }}按指定的樣式(樣式定義同now標簽)來格式化一個時間對象
timesince
Examples:
{{ datetime|timesince }} {{ datetime|timesince:"other_datetime" }}格式化一個日期,這個日期是從給定日期到現(xiàn)在的天數(shù)和小時數(shù)(比如: “4 days, 6 hours”).
接受一個可選的參數(shù),該參數(shù)是一個包含比較日期的變量(該參數(shù)默認值是 now). 舉例來說, 如果 blog_date 是一個日期實例表示 2006-06-01 午夜, 而 comment_date 是一個日期實例表示 2006-06-01 早上8點,那么 {{ comment_date|timesince:blog_date }} 將返回 “8 hours”.
timeuntil
Examples:
{{ datetime|timeuntil }} {{ datetime|timeuntil:"other_datetime" }}類似 timesince, 只是它比較當前時間直到給定日期時間。舉例來說,如果今天是 2006-06-01 而 conference_date 是 2006-06-29, 那么 {{ conference_date|timeuntil }} 將返回 “28 days”.
接受一個可選的參數(shù),該參數(shù)是一個包含比較日期的變量(該參數(shù)默認值是 now). 舉例來說, 如果 from_date 是一個日期實例表示 2006-06-22, 那么 {{ conference_date|timeuntil:from_date }} 會返回 “7 days”.
title
Example:
{{ string|titlecase }}按標題格式轉化一個字符串
truncatewords
Example:
{{ string|truncatewords:"15" }}將一個字符串截短為指定數(shù)目的單詞.
truncatewords_html
Example:
{{ string|truncatewords_html:"15" }}Similar to?truncatewords?, except that it is aware of HTML tags. Any tags that are opened in the string and not closed before the truncation point are closed immediately after the truncation.
This is less efficient than?truncatewords?, so it should be used only when it is being passed HTML text.
unordered_list
Example:
<ul> {{ list|unordered_list }} </ul>遞歸的接受一個自嵌套的列表并返回一個HTML無序列表(此列表可不是pythob語義中的列表) — 只是沒有開始和結束的<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>
upper
例子:
{{ string|upper }}將一個字符串全部字母改為大寫。
urlencode
例子:
<a href="{{ link|urlencode }}">linkage</a>轉義該值以用于 URL.
urlize
例子:
{{ string|urlize }}將URLs由純文本變?yōu)榭牲c擊的鏈接。
urlizetrunc
例子:
{{ string|urlizetrunc:"30" }}將URLs變?yōu)榭牲c擊的鏈接,按給定字母限截短URLs。
wordcount
例如:
{{ string|wordcount }}返回單詞數(shù)。
wordwrap
例如:
{{ string|wordwrap:"75" }}在指定長度將文字換行。
yesno
例如:
{{ boolean|yesno:"Yes,No,Perhaps" }}提供一個字符串參數(shù)對應著 true, false 和 (可選的) None, 根據(jù)被處理的值返回相應的字符串:
| True | "yeah,no,maybe" | yeah |
| False | "yeah,no,maybe" | no |
| None | "yeah,no,maybe" | maybe |
| None | "yeah,no" | "no"?(如果不存在?None?的映射,將?None?變?yōu)?False) |
轉載于:https://www.cnblogs.com/Simon-xm/p/3891551.html
總結
以上是生活随笔為你收集整理的Django内建模版标签和过滤器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring Data JPA 查询方法
- 下一篇: Cocos2d-x项目移植到WP8小记