今回のお題
今回は、djangoテンプレートのdateフィルターについて取り上げます。
例によって自分用のメモですね。
目次
- フィルターとは
- dateフィルターとは
- フォーマットの規定値について
フィルターとは
まずはフィルターそのものについての説明を念の為。
フィルターとは、djangoテンプレートの{{}}で囲まれた値を加工するためのものです。
以下のように値とフィルター名を|
で区切って使います。
<!-- fugaがフィルター名 -->
{{ user.nickname|fuga }}
dateフィルターとは
dateフィルターは年月日の表示形式を加工するためのものです。
以下のように|date:"フォーマット形式"
という形で記述します。
{{ user.birthday|date:"Y年n月j日" }}
これで~年~月~日
という形式で表示されるようになりました。
(n月j日
なので一桁の数字は0詰めになりません。0詰めがよければm月d日
表記にしましょう。)
おまけ:フォーマットの規定値について
dateフィルターをかけない場合のフォーマットは、基本的にY年n月j日
表記になっているかと思います。
この仕組みが気になったので簡単にではありますが調べてみました。
まず、年月日のフォーマットの形式にはDATE_FORMAT
という値が関わっているようです。
そして、公式ドキュメントではDATE_FORMAT
について以下のように書かれていました。
DATE_FORMAT¶
Default: 'N j, Y' (e.g. Feb. 4, 2003)
The default formatting to use for displaying date fields in any part of the system. Note that if USE_L10N is set to True, then the locale-dictated format has higher precedence and will be applied instead.
つまり
基本は
N j, Y
形式だがsettings.pyにおいてUSE_L10N = True
となっていれば代わりに地域設定に応じた値が使われる。
ということですね。
以上をまとめると、
-
USE_L10N = True
であれば年月日は基本的にY年n月j日
形式で表示される。 - 表示形式を規定値から変更したい場合は
USE_L10N = False
に変更した上で、settigs.pyでDATE_FORMAT
の値を設定し直す。 - 個別に変更したい場合は
dateフィルター
を使う。
ということになります。
日付の取り扱いは若干苦手意識があるのですが、早く慣れていきたいですね。