wake-up-neo.com

Django Admin - ändere den Header 'Django Administration' Text

Wie ändert man den 'Django Administration' Text im Django admin Header?

Es scheint nicht in der Dokumentation "Anpassen des Administrators" behandelt zu werden.

183

Update : Wenn Sie Django 1.7+ verwenden, lesen Sie Antwort unten .


Ursprüngliche Antwort von 2011: Dazu müssen Sie Ihre eigene Admin-Vorlage base_site.html Erstellen. Am einfachsten erstellen Sie die Datei:

/<projectdir>/templates/admin/base_site.html

Dies sollte eine Kopie von original base_site.html sein, außer Sie geben Ihren benutzerdefinierten Titel ein:

{% block branding %}
<h1 id="site-name">{% trans 'my cool admin console' %}</h1>
{% endblock %}

Damit dies funktioniert, müssen Sie die richtigen Einstellungen für Ihr Projekt haben, und zwar in settings.py:

  • Stellen Sie sicher, dass /projectdir/templates/ Zu TEMPLATE_DIRS Hinzugefügt wurde.
  • Stellen Sie sicher, dass Django.template.loaders.filesystem.Loader Zu TEMPLATE_LOADERS Hinzugefügt wurde.

Weitere Informationen zu settings.py Finden Sie in der Dokumentation. .

133
user608133

Ab Django 1.7 müssen Sie keine Vorlagen mehr überschreiben. Sie können jetzt site_header , site_title und index_title Attribute auf einer benutzerdefinierten AdminSite , um den Seitentitel und den Headertext der Admin-Site einfach zu ändern. Erstellen Sie eine AdminSite-Unterklasse und binden Sie Ihre Instanz in Ihre URLconf ein:

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 : Wie von oxfn hervorgehoben, können Sie einfach das site_header in Ihrem urls.py oder admin.py direkt ohne Unterklasse AdminSite:

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

Es gibt eine einfache Möglichkeit, den Admin-Site-Header festzulegen - weisen Sie ihn der aktuellen Admin-Instanz in urls.py Wie folgt zu

admin.site.site_header = 'My admin'

Oder man kann etwas Magie zur Erstellung von Headern in einer separaten Methode implementieren

admin.site.site_header = get_admin_header()

Daher ist es in einfachen Fällen nicht erforderlich, AdminSite zu unterklassifizieren.

179
oxfn

Im urls.py Sie können die 3 wichtigsten Variablen überschreiben:

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"

Referenz: Django-Dokumentation zu diesen Attributen .

74
Gregory

Eine einfache Komplettlösung in Django 1.8.3 basierend auf den Antworten in dieser Frage.

Im settings.py hinzufügen:

ADMIN_SITE_HEADER = "My shiny new administration"

Im urls.py hinzufügen:

from Django.conf import settings
admin.site.site_header = settings.ADMIN_SITE_HEADER
61
kuzavas

Am einfachsten stellen Sie sicher, dass Sie haben

from Django.contrib import admin

und dann füge diese unten in url.py von Ihnen Hauptanwendung

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

Für Django 2.1.1 füge folgende Zeilen zu urls.py Hinzu

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

Wie Sie in templates sehen können, wird der Text über das Lokalisierungsframework geliefert (beachten Sie die Verwendung des Template-Tags trans). Sie können Änderungen an den Übersetzungsdateien vornehmen, um den Text zu überschreiben, ohne eine eigene Kopie der Vorlagen zu erstellen.

  1. mkdir locale
  2. ./manage.py makemessages
  3. Bearbeiten locale/en/LC_MESSAGES/Django.po, diese Zeilen hinzufügen:

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

Siehe https://docs.djangoproject.com/en/1.3/topics/i18n/localization/#message-files

9
Wedgwood

Zunächst sollten Sie Ihrem Projekt templates/admin/base_site.html hinzufügen. Diese Datei kann ohne Bedenken überschrieben werden, da es sich um eine Datei handelt, die von den Django= Entwicklern zum genauen Anpassen Ihrer Admin-Site erstellt wurde.

{% 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 %}

Dies ist gängige Praxis. Aber danach bemerkte ich, dass ich immer noch eine nervige "Site Administration" auf der Haupt-Admin-Indexseite hatte. Und diese Zeichenfolge befand sich nicht in einer der Vorlagen, sondern wurde in der Administratoransicht festgelegt. Zum Glück ist das leicht zu ändern. Angenommen, Ihre Sprache ist Englisch, führen Sie die folgenden Befehle in Ihrem Projektverzeichnis aus:

$ mkdir locale
$ ./manage.py makemessages -l en

Öffnen Sie nun die Datei locale/de/LC_MESSAGES/Django.po und fügen Sie zwei Zeilen nach den Headerinformationen hinzu (die letzten beiden Zeilen dieses Beispiels)

"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 protected]>\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"

Vergessen Sie danach nicht, den folgenden Befehl auszuführen und den Server Ihres Projekts neu zu laden:

$ ./manage.py compilemessages

quelle: 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

Sie können AdminSite.site_header, um diesen Text zu ändern. Hier ist das docs

2
YasinYA

sie müssen keine Vorlage für diese Arbeit ändern. Sie müssen nur das settings.py Ihres Projekts. Gehe zum Ende des settings.py und definiere dies.

admin.site.site_header = 'My Site Admin'

Auf diese Weise können Sie die Kopfzeile des Django admin ändern. Außerdem können Sie weitere Informationen zu Django admin-Anpassungen und -Einstellungen zu folgenden Themen lesen Verknüpfung.

Django Admin Documentation

2
Chitrank Dixit

Da ich in meiner App nur die Admin-Oberfläche verwende, habe ich diese in die admin.py eingefügt:

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

Sie überschreiben nur die admin/base_site.html template (kopiere die Vorlage von Django.contrib.admin.templates und geben Sie Ihr eigenes Admin-Vorlagenverzeichnis ein) und ersetzen Sie den branding -Block.