2010年4月9日金曜日

Django:管理画面のテンプレートをオーバライド・その後

 管理画面のテンプレートをオーバライドして、デバッグ環境ではうまくいったのだが、デブロイしたらうまくいかない。

 どうも {% extends "admin/base_site.html" %} で継承している継承元をうまく呼び出せていないようで、崩れた形で表示される。

 あれこれやったが、結局アプリケーション単位で必要なブロックだけをオーバーライドする形でうまくいった。

 なぜ最初のやり方がデバック環境でしか動かなかったかは謎だが、謎解きは...、多分しないな (^^;

----
 やったのは結局
1.default のテンプレートをオーバーライドするディレクトリを作る
 settings.py で定義されている TEMPLATE_DIRS の下に admin ディレクトリを作り、その下にさらにアプリケーション名のディレクトリを作る。

2.そのディレクトリにオーバライド部分を書いた change_form.html を置く。内容は以下のとおり。
{% extends "admin/change_form.html" %}

{% block extrahead %}{{ block.super }}
<script type="text/javascript" src="../../../jsi18n/"></script>
{{ media }}
<style type="text/css"><!--
.vURLField { width:60em; } <-- ここがオーバライドされる css
--></style>
{% endblock %}

0 件のコメント:

コメントを投稿