Sunday, November 25, 2007

adminのオーバーライド2

以前書いたdjangoでadminをオーバーライドする方法がかなりひどい方法だとわかったのでもう一度書くことにした。

いろいろ調べたのだけど
http://code.djangoproject.com/wiki/ExtendingAdminTemplates
に載っているやりかたが非常に簡単。
例えば自分のサイトが

+ mysite
+ admin
+ polls
+ template
+ admin
+ change_list.html

となっていたら以下のようにtemplates のところに admin_copies ディレクトリを作り、そこに change_list.html とかをオリジナルのものからコピーしてくる。

+ mysite
+ admin
+ polls
+ templates
+ admin
+ change_list.html
+ admin_copies
+ change_list.html

そして mysite/templates/admin/change_list.html は admin_copies のものをextends してオーバーライドする。

例えば以下のように

{% extends "admin_copies/change_list.html" %}
{% load adminmedia admin_list i18n %}

{% block search %} < div > Insert your change list message here and there... < /div > {% search_form cl %}{% endblock %}

また以下のようにコピーの替わりにソフトリンクを張っても同じことが可能

ln -s /PATH-TO-DJANGO/django/contrib/admin/templates/admin/change_list.html templates/admin_copies/change_list.html

djangoのインストールディレクトリが固定されている場合はこういう方法もいいかもしれない(別環境持っていったら動かないとかのトラブルもおきそうだけど)。

1 Comments:

Blogger a2c_s_1980 said...

ここにさらに詳しく解説されている方がいました。
http://tech.triax.jp/index.php?Django

10:29 AM  

Post a Comment

<< Home