テンプレートの読み込みで苦労しました

37 views
Skip to first unread message

Toshiharu Moriyama

unread,
Sep 20, 2011, 11:39:59 AM9/20/11
to kay-us...@googlegroups.com
こんにちは
ドキュメントの 「7.4. テンプレートの読み込み」で、APP_DIR/templates は
パスを通さなくても読み込んでくれると思っていました。

base.html を作って index.html から extends で読み込んだら何かおかしい。
TEMPLATE_DIR に
APP_DIR/templates を追加したら期待通りの結果に。
変だと思いファイル検索したら kay/templates/base.html を発見。
これを使ってたので、おかしかったのか…。

base.html から myapp_base.html に変更して、
TEMPLATE_DIR が無いとエラー。
なるほど…。

APP がふたつ以上あり、 各 templates に同じ名前があると、
TEMPLATE_DIR に
指定した優先順位になるので、app がある template を初めにいれて、そのあとで
TEMPLATE_DIRで最後に kay/templates だと、いいのかな?

ひとまず、原因はわかったので、以上で報告を終わります。

Yukitaka Uchikoshi

unread,
Sep 21, 2011, 3:46:21 AM9/21/11
to kay-us...@googlegroups.com
同じく、base.htmlをextedsで読み込んではまったことがあります。
多分、base.htmlの名前でベースファイルを自分で作ると一度ははまるんじゃないか、と思います。


ぜひ、ドキュメントの方に、テンプレートの読み込み優先順位を載せて頂くか、base.htmlの名前を自分のアプリケーションのtemplatesディレクトリに
作った時の挙動を注意書きとして書いておくとといいと思います。




2011/9/21 Toshiharu Moriyama <aqua....@gmail.com>

--
このメールは Google グループのグループ「kay-users-ja」の登録者に送られています。
このディスカッションをウェブ上で閲覧するには、https://groups.google.com/d/msg/kay-users-ja/-/EBM04QgJMmAJ にアクセスしてください。
このグループに投稿するには、kay-us...@googlegroups.com にメールを送信してください。
このグループから退会するには、kay-users-ja...@googlegroups.com にメールを送信してください。
詳細については、http://groups.google.com/group/kay-users-ja?hl=ja からこのグループにアクセスしてください。

ENDOH takanao

unread,
Sep 22, 2011, 12:33:56 AM9/22/11
to kay-us...@googlegroups.com
遠藤です。

ドキュメントにセクションはありますが、確かにチュートリアルにはそこまで書いてないですね。

http://kay-docs-jp.shehas.net/settings.html#settings.TEMPLATE_DIRS
http://kay-docs-jp.shehas.net/templates.html#id3

settings.TEMPLATE_DIRS を指定するのが正しい方法です。

--
ENDOH takanao / MiCHiLU Labs.
http://MiCHiLU.com/contacts


2011/9/21 Yukitaka Uchikoshi <yukitaka....@gmail.com>:

Toshiharu Moriyama

unread,
Sep 23, 2011, 6:07:58 AM9/23/11
to kay-us...@googlegroups.com
アプリが複数有り、i18n していると「あれ?」って思います。
i18n で、mo ファイルを参照するのが setting.INSTALLED_APPS ですし。

「優先的に」と書いてありますが、myapp/templates に myapp_base.html として
extends しても読み込みません。
myapp/template は別のドキュメントの場所で、自動的に読み込まれますと書いてあります。
kay/templates は settings.TEMPLATE_DIRS が空でも強制的に入れられる。

なんか、しっくりこないでいます。

Toshiharu Moriyama

unread,
Sep 23, 2011, 7:13:42 AM9/23/11
to kay-us...@googlegroups.com
どうも気になり、hack してみたら…。

2011年9月23日金曜日19時07分58秒 UTC+9 Toshiharu Moriyama:
アプリが複数有り、i18n していると「あれ?」って思います。
i18n で、mo ファイルを参照するのが setting.INSTALLED_APPS ですし。
python manage.py extract_messages -a をすると、settings.TEMPLATE_DIRS も
対象フォルダとして、作ってくれるのを発見し、確認しました。

/i18n フォルダにある mo ファイルを参照してくれるか、確認してみます。


Takashi Matsuo

unread,
Sep 23, 2011, 7:22:45 AM9/23/11
to kay-us...@googlegroups.com

TEMPLATES_DIRS を指定しても動きますが、他の楽な方法もありますよ。

例えば myapp/templates/base.html を参照するには
myapp/base.html と指定すれば参照できるはずです。

各アプリケーション内に同名のテンプレートがあるとややこしいのでこうしていますが、逆にわかりづらかったでしょうか。

-- 
Takashi Matsuo
matsuo....@gmail.com
Kay's daddy


2011/9/23 Toshiharu Moriyama <aqua....@gmail.com>

--
このメールは Google グループのグループ「kay-users-ja」の登録者に送られています。
このディスカッションをウェブ上で閲覧するには、https://groups.google.com/d/msg/kay-users-ja/-/jYsSsuLvZqUJ にアクセスしてください。

Toshiharu Moriyama

unread,
Sep 23, 2011, 2:38:50 PM9/23/11
to kay-us...@googlegroups.com
うっ

2011年9月23日金曜日20時22分45秒 UTC+9 tmatsuo:

例えば myapp/templates/base.html を参照するには
myapp/base.html と指定すれば参照できるはずです。


できました…。
 {% extentds "myapp/templates/base.html" %}
とやってもいかないので諦めてました…。

同じ階層にある、つまりお隣さんを参照するのにパスを指定するというのが、直感的ではないと思います。
TEMPLATE_DIR に書いてある path しか参照しません!って仕様なら、それはそれでいいのですが…。
ただ、view からは、そのように参照するわけですが…。

で、確認した結果。/i18n のカタログファイルを参照してくれました。
あと manage.py での、i18n 関係コマンドの -a オプションの挙動も把握できました。

いま、サービスに入る前の静的コンテンツを作っているのですが、いくつか動的コンテンツを作りたくなり、
アプリを増やすことにしました。その時、共有テンプレートが必要なので、結果良しとします。
kay-users-jp にどんどん投稿しろ!で、いいかな(^^;)

ただ、やっぱり kay/templates がパスに入っているのはどうかとおもいます。
Jinja を知らない人が extends を使ったやり方を初めにするとき、base.html にする確立が高いですから。
kay_base.html にするか、パスを通さないか、どちらかにした方が良いと思います。

自分が作った base.html と内容が似てたので、別ファイルを参照していると気がつくまで、
相当の時間を費やしました。(頭が煮詰まっていたというのもありますが。)

まぁ、資産として残ったし、結果オーライ!
Reply all
Reply to author
Forward
0 new messages