djangoでadminをオーバーライドする方法
#####################################
追記 2007/12/1
さらにもう少し簡単なextendsを使う方法が別サイトに載っていたので紹介しました
http://programing-a2c-jp.blogspot.com/2007/11/admin2.html
追記 2007/11/24
ここに書いてある方法はかなり変則的なextendsを利用したオーバーライドです。普通は
django/contrib/admin/templates/admin/base_site.html
を
/home/my_username/mytemplates/admin/base_site.html
のような自分のアドミンテンプレートにコピーして使うのがdjangoのやりかたのようです。
#####################################
admin サイトをカスタマイズして使いたくなったので、とりあえずadminトップページの'admin/index.html' をテンプレートで継承する方法をまとめてみた。
自分のサイトのディレクトリが mysite で admin に関するコードを mysite/admin 及び mysite/template/admin 以下に入れるとする。
テンプレート
あとは mysite/admin/views.py にテンプレートを表示させる admin 関数があるとすると以下のような設定を mysite/admin/urls.py に付け加える。
そして mysite/admin/views.py は以下のような感じ
これで
http://127.0.0.1:8000/mysite/admin/
とかにアクセスして
が表示されていれば成功
追記 2007/12/1
さらにもう少し簡単なextendsを使う方法が別サイトに載っていたので紹介しました
http://programing-a2c-jp.blogspot.com/2007/11/admin2.html
追記 2007/11/24
ここに書いてある方法はかなり変則的なextendsを利用したオーバーライドです。普通は
django/contrib/admin/templates/admin/base_site.html
を
/home/my_username/mytemplates/admin/base_site.html
のような自分のアドミンテンプレートにコピーして使うのがdjangoのやりかたのようです。
#####################################
admin サイトをカスタマイズして使いたくなったので、とりあえずadminトップページの'admin/index.html' をテンプレートで継承する方法をまとめてみた。
自分のサイトのディレクトリが mysite で admin に関するコードを mysite/admin 及び mysite/template/admin 以下に入れるとする。
テンプレート
### mysite/template/admin/index.html
{% extends "admin/index.html" %}
{% block breadcrumbs %}hello my 1st customize admin page
{% endblock %}
{% block userlinks %}
{% endblock %}
あとは mysite/admin/views.py にテンプレートを表示させる admin 関数があるとすると以下のような設定を mysite/admin/urls.py に付け加える。
### mysite/admin/urls.py
urlpatterns = patterns('mysite.admin.views',
(r'^$', 'admin'),
)
# 以下を付け加えることで index.html 管理下のページ以下にはオリジナルの
# admin ビューが作用する。
urlpatterns += patterns('',
(r'', include('django.contrib.admin.urls')),
)
そして mysite/admin/views.py は以下のような感じ
### mysite/admin/views.py
def admin(request):
return render_to_response('mysite/admin/index.html', {'title': _('Site administration'),}, context_instance=RequestContext(request))
これで
http://127.0.0.1:8000/mysite/admin/
とかにアクセスして
hello my 1st customize admin page
が表示されていれば成功