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 のメディア・プレフィックスを加えます |