django adminヘッダーの「Django管理」テキストをどのように変更しますか?
「管理者のカスタマイズ」のドキュメントには記載されていないようです。
django adminヘッダーの「Django管理」テキストをどのように変更しますか?
「管理者のカスタマイズ」のドキュメントには記載されていないようです。
回答:
更新:Django 1.7以降を使用している場合は、以下の回答を参照してください。
2011年の元の回答: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
。{% extends "admin/base.html" %}
では/<projectdir>/templates/admin/base_site.html
、単にブロック(複数可)あなたが必要とする、すなわちを再定義します{% block branding %}...{% endblock %}
。
TEMPLATE_LOADER
設定を追加しなくても上記は機能します。ちょうどそれTEMPLATE_DIR
で十分だと思われます
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)),
)
更新:oxfnで指摘されているようsite_header
に、サブクラス化せずに、urls.py
またはにadmin.py
直接設定できますAdminSite
。
admin.site.site_header = 'My administration'
admin_site
作成したnew でモデルを登録する必要があります。いいねadmin_site.register(MyModel, ModelAdmin)
admin/base_site.html
たとえば、password_resetなどのテンプレートに依存)extra_context
、URLでも使用する必要があります。例:url(r'^password_reset/$', auth_views.password_reset, name='admin_password_reset', kwargs={'extra_context': {'site_header': "My administration"}})
admin.site.site_header
、どの設定でapp*/admin.py
有効になりますか?
管理サイトのヘッダーを設定する簡単な方法があります- urls.py
このように現在の管理インスタンスに割り当てます
admin.site.site_header = 'My admin'
または、別のメソッドでヘッダー構築の魔法を実装することもできます
admin.site.site_header = get_admin_header()
したがって、単純なケースでは、サブクラス化する必要はありません AdminSite
admin.site.site_title = 'My site admin'
。これは次のように実行できます。
urls.py
:from django.contrib import admin
AdminSite
してそれを動作させるためにしばらく費やしましたautodiscover()
が、最後に自分でこの解決策を考えました。私は実際に私のオーバーライドを持っていますがadmin.py
、他のすべての管理関連ロジック
では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 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
admin.py
。まだ持っていない場合は、作成して追加することを忘れないでくださいfrom django.contrib import admin
。
ADMIN_SITE_HEADER
ここで重要なのは、ラインインですurls.py
それを行う最も簡単な方法は、
from django.contrib import admin
次に、これらurl.py
をメインアプリケーションの下部に追加します
admin.site.site_title = "Your App Title"
admin.site.site_header = "Your App Admin"
テンプレートで確認できるように、テキストはローカリゼーションフレームワークを介して配信されます(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を参照してください
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')
from django.utils.translation import ugettext_lazy
この行を追加することを忘れないでください。
まず、プロジェクトに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 <LL@li.org>\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/
Djangoの2.0あなただけの内の1行を追加することができますurl.py
し、名前を変更します。
# url.py
from django.contrib import admin
admin.site.site_header = "My Admin Central" # Add this
古いバージョンのDjangoの場合。(<1.11以前)編集する必要がありますadmin/base_site.html
この行を変更
{% block title %}{{ title }} | {{ site_title|default:_('Django site admin') }}{% endblock %}
に
{% block title %}{{ title }} | {{ site_title|default:_('Your Site name Admin Central') }}{% endblock %}
あなたはあなたのdjango
バージョンをチェックすることができます
django-admin --version
この作業のためにテンプレートを変更する必要はなくsettings.py
、プロジェクトのを更新するだけです。の下部に移動して、settings.py
これを定義します。
admin.site.site_header = 'My Site Admin'
このようにして、Django管理者のヘッダーを変更できます。さらに、Django Adminのカスタマイズと設定の詳細については、次のリンクを参照してください。
を使用AdminSite.site_header
してそのテキストを変更できます。ここにドキュメントがあります
これを行うには2つの方法があります。
1]をオーバーライドbase_site.html
することによりdjango/contrib/admin/templates/admin/base_site.html
、次の内容が含まれbase_site.html
ます。
{% extends "admin/base.html" %}
{% block title %}{{ title }} | {{ site_title|default:_('Django site admin') }}{% endblock %}
{% block branding %}
<h1 id="site-name"><a href="{% url 'admin:index' %}">{{ site_header|default:_('Django administration') }}</a></h1>
{% endblock %}
{% block nav-global %}{% endblock %}
上記のコードスニペットのsite_titleとsite_headerを編集します。この方法は機能しますが、静的な変更であるためお勧めできません。
2] urls.py
プロジェクトのディレクトリに次の行を追加する:
admin.site.site_header = "AppHeader"
admin.site.site_title = "AppTitle"
admin.site.index_title = "IndexTitle"
編集せずにサイトヘッダー、サイトタイトル、インデックスタイトルを変更できるため、この方法をお勧めしbase_site.html
ます。