LoginSignup
193

More than 5 years have passed since last update.

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

Last updated at Posted at 2017-11-16

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

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
193