web-dev-qa-db-ja.com

Django Admin-ヘッダー「Django管理」テキストを変更します

Django adminヘッダーの「Django管理」テキストをどのように変更しますか?

「管理者のカスタマイズ」のドキュメントには記載されていないようです。

183

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.LoaderTEMPLATE_LOADERSに追加されていることを確認してください。

settings.pyの詳細についてはドキュメントを参照

133
user608133

Django 1.7以降、テンプレートをオーバーライドする必要はありません。 site_headersite_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.pyadmin.py を設定できますAdminSite

admin.site.site_header = 'My administration'
333
Reto Aebersold

管理サイトのヘッダーを設定する簡単な方法があります-urls.pyの現在の管理インスタンスにこのように割り当てます

admin.site.site_header = 'My admin'

または、別の方法でヘッダー構築マジックを実装できます

admin.site.site_header = get_admin_header()

したがって、単純なケースではAdminSiteをサブクラス化する必要はありません

179
oxfn

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ドキュメント

74
Gregory

この質問の回答に基づいた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
61
kuzavas

それを行う最も簡単な方法は、あなたが持っていることを確認してください

from Django.contrib import admin

そして、あなたのメインアプリケーションのurl.pyの最後にこれらを追加してください

admin.site.site_title = "Your App Title"
admin.site.site_header = "Your App Admin" 
13

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'
11
Ganesh

templates でわかるように、テキストはローカライズフレームワークを介して配信されます(transテンプレートタグの使用に注意してください)。テンプレートの独自のコピーを作成せずに、翻訳ファイルを変更してテキストを上書きできます。

  1. mkdir locale
  2. ./manage.py makemessages
  3. locale/en/LC_MESSAGES/Django.poを編集して、次の行を追加します。

    msgid "Django site admin"
    msgstr "MySite site admin"
    
    msgid "Django administration"
    msgstr "MySite administration"
    
  4. ./manage.py compilemessages

https://docs.djangoproject.com/en/1.3/topics/i18n/localization/#message-files を参照してください

9
Wedgwood

まず、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/

4
Soroosh

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')
4
Fakher Meddeb

AdminSite.site_headerを使用して、そのテキストを変更できます。これが docs です

2
YasinYA

この作業のためにテンプレートを変更する必要はありません。プロジェクトのsettings.pyを更新するだけです。 settings.pyの一番下に移動して、これを定義します。

admin.site.site_header = 'My Site Admin'

この方法で、Django adminのヘッダーを変更できます。さらに、次のリンクでDjango管理者のカスタマイズと設定の詳細を読むことができます。

Django管理ドキュメント

2
Chitrank Dixit

アプリでは管理インターフェイスのみを使用するため、これをadmin.pyに配置します。

admin.site.site_header = 'My administration'
1
numahell

admin/base_site.htmlテンプレートをオーバーライドし(Django.contrib.admin.templatesからテンプレートをコピーし、独自の管理テンプレートdirに配置)、brandingブロックを置き換えるだけです。