Django adminヘッダーの「Django管理」テキストをどのように変更しますか?
「管理者のカスタマイズ」のドキュメントには記載されていないようです。
Update:Django 1.7+を使用している場合は、 以下の回答 を参照してください。
2011年の元の回答:これを行うには、独自のadmin base_site.html
テンプレートを作成する必要があります。最も簡単な方法は、ファイルを作成することです。
/<projectdir>/templates/admin/base_site.html
これは、 元のbase_site.html
のコピーである必要がありますが、カスタムタイトルを入れる場合は除きます。
{% block branding %}
<h1 id="site-name">{% trans 'my cool admin console' %}</h1>
{% endblock %}
これを機能させるには、プロジェクトの正しい設定、つまりsettings.py
を設定する必要があります。
/projectdir/templates/
がTEMPLATE_DIRS
に追加されていることを確認してください。Django.template.loaders.filesystem.Loader
がTEMPLATE_LOADERS
に追加されていることを確認してください。Django 1.7以降、テンプレートをオーバーライドする必要はありません。 site_header 、 site_title
、および index_title
カスタムの属性を簡単に変更できるようになりました AdminSite サイトのページタイトルとヘッダーテキスト。 AdminSiteサブクラスを作成し、インスタンスをURLconfにフックします。
admin.py:
from Django.contrib.admin import AdminSite
from Django.utils.translation import ugettext_lazy
class MyAdminSite(AdminSite):
# Text to put at the end of each page's <title>.
site_title = ugettext_lazy('My site admin')
# Text to put in each page's <h1> (and above login form).
site_header = ugettext_lazy('My administration')
# Text to put at the top of the admin index page.
index_title = ugettext_lazy('Site administration')
admin_site = MyAdminSite()
urls.py:
from Django.conf.urls import patterns, include
from myproject.admin import admin_site
urlpatterns = patterns('',
(r'^myadmin/', include(admin_site.urls)),
)
Update:oxfnが指摘したように、サブクラス化せずに直接site_header
またはurls.py
に admin.py
を設定できますAdminSite
:
admin.site.site_header = 'My administration'
管理サイトのヘッダーを設定する簡単な方法があります-urls.py
の現在の管理インスタンスにこのように割り当てます
admin.site.site_header = 'My admin'
または、別の方法でヘッダー構築マジックを実装できます
admin.site.site_header = get_admin_header()
したがって、単純なケースではAdminSite
をサブクラス化する必要はありません
urls.py
では、3つの最も重要な変数をオーバーライドできます。
from Django.contrib import admin
admin.site.site_header = 'My project' # default: "Django Administration"
admin.site.index_title = 'Features area' # default: "Site administration"
admin.site.site_title = 'HTML title from adminsitration' # default: "Django site admin"
参照: これらの属性に関するDjangoドキュメント 。
この質問の回答に基づいたDjango 1.8.3のシンプルで完全なソリューション。
settings.py
に追加:
ADMIN_SITE_HEADER = "My shiny new administration"
urls.py
に追加:
from Django.conf import settings
admin.site.site_header = settings.ADMIN_SITE_HEADER
それを行う最も簡単な方法は、あなたが持っていることを確認してください
from Django.contrib import admin
そして、あなたのメインアプリケーションのurl.py
の最後にこれらを追加してください
admin.site.site_title = "Your App Title"
admin.site.site_header = "Your App Admin"
Django 2.1.1の場合、urls.py
に次の行を追加します
from Django.contrib import admin
# Admin Site Config
admin.sites.AdminSite.site_header = 'My site admin header'
admin.sites.AdminSite.site_title = 'My site admin title'
admin.sites.AdminSite.index_title = 'My site admin index'
templates でわかるように、テキストはローカライズフレームワークを介して配信されます(trans
テンプレートタグの使用に注意してください)。テンプレートの独自のコピーを作成せずに、翻訳ファイルを変更してテキストを上書きできます。
mkdir locale
./manage.py makemessages
locale/en/LC_MESSAGES/Django.po
を編集して、次の行を追加します。
msgid "Django site admin"
msgstr "MySite site admin"
msgid "Django administration"
msgstr "MySite administration"
./manage.py compilemessages
https://docs.djangoproject.com/en/1.3/topics/i18n/localization/#message-files を参照してください
まず、templates/admin/base_site.htmlをプロジェクトに追加する必要があります。このファイルは、Django開発者が管理サイトを少しカスタマイズするという目的のために意図したファイルなので、安全に上書きできます。ファイルに何を入れるかの例を次に示します。
{% extends "admin/base.html" %}
{% load i18n %}
{% block title %}{{ title }} | {% trans 'Some Organisation' %}{% endblock %}
{% block branding %}
<style type="text/css">
#header
{
/* your style here */
}
</style>
<h1 id="site-name">{% trans 'Organisation Website' %}</h1>
{% endblock %}
{% block nav-global %}{% endblock %}
これは一般的な方法です。しかし、この後、メインの管理者インデックスページに迷惑な「サイト管理」が残っていることに気付きました。そして、この文字列はどのテンプレート内にもありませんでしたが、管理ビュー内に設定されていました。幸いなことに、変更は非常に簡単です。言語が英語に設定されていると仮定して、プロジェクトディレクトリから次のコマンドを実行します。
$ mkdir locale
$ ./manage.py makemessages -l en
次に、ファイルlocale/en/LC_MESSAGES/Django.poを開き、ヘッダー情報の後に2行追加します(この例の最後の2行)
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2010-04-03 03:25+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <[email protected]>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "Site administration"
msgstr "Main administration index"
この後、次のコマンドを実行して、プロジェクトのサーバーを再ロードすることを忘れないでください:
$ ./manage.py compilemessages
ソース: http://overtag.dk/wordpress/2010/04/changing-the-Django-admin-site-title/
admin.py:
from Django.contrib.admin import AdminSite
AdminSite.site_title = ugettext_lazy('My Admin')
AdminSite.site_header = ugettext_lazy('My Administration')
AdminSite.index_title = ugettext_lazy('DATA BASE ADMINISTRATION')
AdminSite.site_header
を使用して、そのテキストを変更できます。これが docs です
この作業のためにテンプレートを変更する必要はありません。プロジェクトのsettings.py
を更新するだけです。 settings.py
の一番下に移動して、これを定義します。
admin.site.site_header = 'My Site Admin'
この方法で、Django adminのヘッダーを変更できます。さらに、次のリンクでDjango管理者のカスタマイズと設定の詳細を読むことができます。
アプリでは管理インターフェイスのみを使用するため、これをadmin.pyに配置します。
admin.site.site_header = 'My administration'
admin/base_site.html
テンプレートをオーバーライドし(Django.contrib.admin.templates
からテンプレートをコピーし、独自の管理テンプレートdirに配置)、branding
ブロックを置き換えるだけです。