Edited at

Django: 組み込みタグとフィルタの一覧

More than 1 year has passed since last update.


Django: 組み込みタグとフィルタの一覧

Djangoリファレンス本家(ver 1.11)の組み込みタグとフィルタの説明を一覧にしたものです。なお、2017/11/17時点で日本語訳されていなかった箇所については意訳しています(内容無保証です)。


組み込みタグリファレンス

Djangoのテンプレートファイル内で {% タグ %} のように使用します。

タグ
説明

autoescape
自動エスケープ機能を制御します。このタグは引数に on または off を取り、ブロック内の自動エスケープの有効・無効を決定します。ブロックの最後は endautoescape タグで閉じるようにします。

block
子テンプレートによってオーバーライドされる部分を定義します。詳しくは Template inheritance を参照してください。

comment
{% comment %} ~ {% endcomment %} で囲まれた部分はすべて無視されます。最初のタグには追加の説明文を含めるすることができます。

csrf_token
このタグは CSRF の防止のために使用します。詳細は Cross Site Request Forgeries を参照してください。

cycle
タグを実行するごとに、引数の文字列や変数から、順に一つずつ値を出力します。

debug
現在のコンテキストや import されたモジュールなどを含んだデバッグ情報ひと揃いを出力します。

extends
このテンプレートが親テンプレートからの拡張であることを指示します。

filter
タグブロック内のコンテンツを、1 つまたは複数のフィルタに通します。複数のフィルタを使うときはパイプ("|")を使って連結します。フィルタには変数のように引数を与えることができます。

firstof
与えられた引数の中から False でない最初の 1 つを出力します。すべて False だった場合は何も出力しません。

for
配列の各要素に渡ってループし、見つかった各要素を変数として使用します。

for ... empty
for タグのオプションとして {% empty %} 節を使うことができます。これはループさせようとした配列が空、または存在しなかった場合に表示する文字列を指定します:

if
{% if %} タグは変数を評価し、その変数が 「true」 であるとき (すなわち変数が存在し、空ではなく、その値が False でないとき ) にブロックの内容を出力します:

ifequal と ifnotequal
{% ifequal a b %} ... {% endifequal %} は、 {% if a == b %} ... {% endif %} の古い書き方です。

ifchanged
値が前回のループ実行時から変わっているかどうかを調べます。

include
テンプレートをロードし、現在のコンテキストを使って出力します。これはテンプレート内に他のテンプレートを取り込む( “include” )方法の一つです。

load
カスタムのテンプレートタグセットを読み込みます。

lorem
ランダムな "lorem ipsum" のラテン語テキストを表示させます。テンプレート内でサンプルデータを用意するのに便利です。

now
指定したフォーマット文字列にしたがって現在の日付や時刻を表示します。フォーマット文字列で使われる文字については、 date フィルタの項で説明しています。

regroup
オブジェクトのリストから、同じ属性値を持つオブジェクトのグループを作ります。

resetcycle
前のサイクルをリセットして、次回の出現時は最初のアイテムから再開します。 引数がなければ{%resetcycle%}はテンプレートに定義されている最後の{%cycle%}をリセットします。

spaceless
ブロック内の HTML タグ間にある空白文字を除去します。タブ文字や改行も含みます。

templatetag
テンプレートタグの構文で使われる文字を、通常の文字として出力します。

url
ビューとオプションの引数を指定して、これとマッチする絶対パスへの参照 ( ドメイン部分を除いた URL ) を返します。結果のパスに特殊文字が含まれる場合、 iri_to_uri() を使ってエンコードされます。

verbatim
このブロックタグ内では、テンプレートエンジンによる解釈を行いません。これは JavaScript テンプレート の文法が Django と衝突してしまう時によく使われます。

widthratio
バーチャートなどを生成する場合のために、指定した値と最大値との比を計算し、 定数に掛けた値を返します。

with
複雑な表現の変数の値をキャッシュし、簡単な名前で参照できるようにします。呼出しコストの高いメソッド (例えばデータベースを操作するようなメソッド) に何度もアクセスする際に便利です。


組み込みフィルタリファレンス

Djangoのテンプレートファイル内で {{ value|フィルタ:"引数" }} のように使用します。

フィルタ
説明

add
入力値に対して引数の値を加算します。

addslashes
引用符の前にスラッシュを追加します。CSV などの文字列をエスケープする際に便利です。

capfirst
入力値の先頭の文字を大文字に変換します。最初の文字がアルファベットでなければ効果はありません。

center
入力値を引数で指定された幅のフィールド内に中央寄せします。

cut
入力値の中から、引数に指定した値を全て取り除きます。

date
引数に指定した書式で日付をフォーマットします。

default
入力の評価値が False の場合、引数に指定したデフォルト値を使います。そうでなければ、入力値を使います。

default_if_none
入力値が None であるとき ( None であるときのみ ) 、引数に指定したデフォルト値を使いま す。そうでなければ、入力値を使います。

dictsort
辞書のリストを入力として、引数に指定したキーでリストをソートして返します。

dictsortreversed
辞書のリストを入力に取り、引数に指定したキーでリストを逆順にソートして返します。これは上のフィルタと全く同じ処理をしますが、返す値は逆順です。

divisibleby
値が引数の値で割り切れる場合に True を返します。

escape
入力文字中にある HTML の特殊文字をエスケープします。具体的には、以下のような置換を行います:

escapejs
JavaScript の文字列リテラルとして扱うために文字エスケープを行います。エスケープ結果は、 HTML としては安全では ありません が、JavaScrpt/JSON を生成するテンプレートの出力が構文エラーを引き起こすことを防ぎます。

filesizeformat
入力値を、人間が読みやすいファイルサイズ表現 (『13 KB』, 『4.1 MB』, 『102 bytes』 など) に変換します。

first
リスト中の最初の要素を返します。

floatformat
引数なしで使った場合、浮動小数点数を小数点以下1桁に丸めます。ただし小数部分がない時には整数部分だけを表示します。例を示します:

force_escape
文字列に HTML エスケープを適用します。

get_digit
入力値が整数であるとき、引数で指定された桁にある数字を返します。例えば引数が 1 のとき右端の桁、 2 のとき右から 2 桁目が指定されます。入力が整数でない場合には、入力値をそのまま返します。

iriencode
IRI (国際化リソース識別子 Internationalized Resource Identifier) を URL に適した文字列に変換します。これは非 ASCII 文字列を URL に埋め込む場合に必要なフィルタです。

join
Python の str.join(list) と同じく、リストを文字列でつなぎます。

last
リストの末尾の要素を返します。

length
入力値の長さを返します。これは、文字列とリストの両方で動作します。

length_is
入力値の長さと引数が等しければ True を返し、そうでなければ False を返します。

linebreaks
プレーンテキストの改行を適切な HTML タグに変換します。 改行 1 つは改行タグ (<br />) に、改行およびそれに続く空行は段落タグ (</p>) に変換されます。

linebreaksbr
プレーンテキストの改行を HTML の改行タグ (<br />) に変換します。

linenumbers
テキストを行番号付きで表示します。

ljust
入力値を指定した幅のフィールド内で左詰めします。

lower
文字列を全て小文字に変換します。

make_list
入力値をリストに変換します。文字列の場合は、各文字からなるリストになります。整数の場合にはユニコード文字列に型変換した後、各文字からなるリストに変換します。

phone2numeric
電話番号 (文字を含む場合もあります) を数値だけの番号に変換します。

pluralize
入力値が 1 でない場合に、複数形を表す接尾辞を返します。デフォルトでは、接尾辞は 's' です。

pprint
pprint.pprint() のラッパーです。

random
与えられたリストからランダムな要素を返します。

rjust
入力値を指定した幅のフィールド内で右詰めします。

safe
文字列に対して、さらなる HTML エスケープが必要でないことをマークするのに使います。 autoescaping がオフの場合、このフィルタは何もしません。

safeseq
シーケンスのそれぞれの要素に対して safe フィルタを適用します。これは例えば join のような、シーケンスを処理する他のフィルタと組み合わせて使うのが便利です。

slice
リストに対するスライスを返します。

slugify
ASCIIに変換します。スペースをハイフ​​ンに変換します。英数字以外の文字、アンダースコア、ハイフンは削除します。小文字に変換します。また、先頭と末尾の空白を取り除きます。

stringformat
引数 (表示形式を指定する文字列) に応じて、変数の表示形式を変更します。指定方法には、printf-style String Formatting シンタックスを使います。

striptags
[X]HTML タグを全てはぎとるようにします。

time
時刻を指定の書式にしたがってフォーマットします。

timesince
日付を経過時間の形式にフォーマットします。

timeuntil
timesince に似ていますが、現在時刻を起点として指定の日付または日時までの時刻を計算します。

title
文字列中の単語に対して、それぞれ先頭の文字を大文字に、残りを小文字にすることで文字列をタイトルケースに変換します。

truncatechars
文字列を指定された文字数以内に切り詰めます。文字数が指定された値より大きいときに文字列を切り詰め、末尾を省略記号 (「…」) に置き換えます。

truncatechars_html
truncatechars に似ていますが、 HTML タグを認識します。切り詰めを行う時点で閉じていないタグがあれば、切り詰めた文字の直後に全て閉じます。

truncatewords
文字列を指定された単語数以内に切り詰めます。

truncatewords_html
truncatewords に似ていますが、 HTML タグを認識します。切り詰めを行う時点で閉じていないタグがあれば、切り詰めた文字の直後に全て閉じます。

unordered_list
再帰的に入れ子になったリストを入力として、 HTML の順不同リスト (UL, unordered list) に変換します。ただし先頭と末尾の<ul>タグは表示しません。

upper
入力値をすべて大文字に変換します。

urlencode
入力値を URL で使えるようにエスケープします。

urlize
テキスト内の URL と Email アドレスをクリック可能なリンクに変換します。

urlizetrunc
urlize と同じように、URL と email アドレスをクリック可能なリンクに変換します。ただし、指定の文字数以上の表示を切り詰めます。

wordcount
ワード数を返します。

wordwrap
指定した行幅でワードラップします。

yesno
入力値(True, False, オプションでNone)に対応する文字列を返します。


国際化タグとフィルタ

Djangoのテンプレートファイル内で {% load ライブラリ %} と指定して使用します。

ライブラリ
説明

i18n
テンプレート内の飜訳可能なテキストを指定することができます。

l10n
テンプレート内の値のローカライズを制御します。

tz
テンプレートのタイムゾーン変換を制御します。


その他のタグとフィルタライブラリ


django.contrib.humanize

データを「ヒトにやさしい」表現にする上で便利な Django テンプレートフィルタのセットです。


static

Djangoのテンプレートファイル内で {% load static %} と指定し、必要な箇所で {% tag 引数 %} のように使用します。

タグ
説明

static
STATIC_ROOTに保存されている静的ファイルにリンクします。 django.contrib.staticfilesアプリケーションがインストールされている場合、タグはSTATICFILES_STORAGEで指定されたストレージのurl()メソッドを使用してファイルを提供します。

get_static_prefix
通常は static テンプレートタグの使用を選ぶべきでしょう、しかし STATIC_URL をテンプレート内に差し込むための場所や方法について、より厳密な制御が必要な場合は、get_static_prefix テンプレートタグを使うことができます

get_media_prefix
get_static_prefix と同じように、get_media_prefix はテンプレート変数に MEDIA_URL のメディア・プレフィックスを加えます