Sunday, October 07, 2007

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/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

が表示されていれば成功

0 Comments:

Post a Comment

<< Home