カスタムテンプレートタグとかテンプレートの拡張とか

Djangoでadminのカスタムテンプレートタグとかテンプレートの拡張とかでハマった点を情報展開しとく。あと備忘録用。

テンプレートのディレクトリ構成は?

過去にdjango-jaで議論してたのを参考に下記の構成で。
(ごめんなさい。議論のページをロストしました...。)

<project-dir>
|-- <app-dir>
|    |-- templates
|    |   `-- admin
|    |       `-- <app-dir> ※アプリケーションディレクトリと同名。
|    |           `-- *.html アプリのadminテンプレートに対しての拡張。
|    `-- templatetags
|        |-- __init__.py Pythonライブラリとして認識させるため必須。
|        `-- *.py カスタムテンプレートタグのコード。
`-- templates
     `-- admin
         `-- *.html adminテンプレート全体に対しての拡張。
テンプレートディレクトリをsettings.pyに登録する。

settings.pyのTEMPLATE_DIRSに登録する。登録するのは2つ。

  • '/path/to/django//templates'
  • '/path/to/django///templates'

/path/to/django/という絶対パスが入ってしまうのだけど、これ回避する策ないかな...。


カスタムテンプレートタグディレクトリをsettings.pyに登録する。

settings.pyのINSTALLED_APPSに登録する。

  • '..templatetags'

あるいは、カスタムテンプレートタグのコードファイルがextras.pyだとしたら、

  • '..templatetags.extras'

これも、INSTALLED_APPSに登録するより賢い方法を模索中。

あとは...

あとはDjangoの翻訳ドキュメントにのっとり拡張すればいいよ。他にハマリどころはないはず。

参考書籍

django-jaの翻訳ドキュメントとともに下記書籍を参考にしました。

余談

業務はPHPが中心だったのだけど、Djangoのadmin利用してサクっと管理画面作ったら暗黙的にDjango採用OKという社内空気。

Tracは着任当初にSubversionとともに導入してプラグイン作ったり。Sphinxは使い始めでこのあと他のアプリに組み込む予定。