Wie ändert man den Text 'Django Administration' im Django Admin Header?
Es scheint nicht in der Dokumentation "Anpassen des Administrators" behandelt zu werden.
python
django
django-admin
Samurailawngnome
quelle
quelle
Antworten:
Update : Wenn Sie Django 1.7+ verwenden, lesen Sie die Antwort unten .
Ursprüngliche Antwort aus dem Jahr 2011:
base_site.html
Dazu müssen Sie eine eigene Admin- Vorlage erstellen . Am einfachsten ist es, die Datei zu erstellen:Dies sollte eine Kopie des Originals sein
base_site.html
, außer dass Sie Ihren benutzerdefinierten Titel eingeben:Damit dies funktioniert, müssen Sie die richtigen Einstellungen für Ihr Projekt haben, nämlich in
settings.py
:/projectdir/templates/
hinzugefügt wirdTEMPLATE_DIRS
.django.template.loaders.filesystem.Loader
hinzugefügt wirdTEMPLATE_LOADERS
.Weitere Informationen finden Sie in den Dokumenten
settings.py
.quelle
{% extends "admin/base.html" %}
in/<projectdir>/templates/admin/base_site.html
und einfach neu definieren den Block (n) benötigen Sie, das heißt{% block branding %}...{% endblock %}
.TEMPLATE_LOADER
Einstellung nicht hinzufügen . NurTEMPLATE_DIR
ist genug, wie es scheintAb Django 1.7 müssen Sie keine Vorlagen mehr überschreiben. Sie können nun implementieren site_header ,
site_title
undindex_title
Attribute auf einem benutzerdefinierten Adminsite , um auf einfache Weise ändern Sie die Admin - Website Seitentitel und Kopftext. Erstellen Sie eine AdminSite-Unterklasse und binden Sie Ihre Instanz in Ihre URLconf ein:admin.py:
urls.py:
Update : Wie von oxfn hervorgehoben, können Sie das einfach
site_header
in Ihremurls.py
oderadmin.py
direkt ohne Unterklasse einstellenAdminSite
:quelle
admin_site
dem von Ihnen erstellten neuen registrieren . Gefälltadmin_site.register(MyModel, ModelAdmin)
admin/base_site.html
Vorlage ab, z. B. password_reset),extra_context
sollte er auch in URLs verwendet werden: zBurl(r'^password_reset/$', auth_views.password_reset, name='admin_password_reset', kwargs={'extra_context': {'site_header': "My administration"}})
admin.site.site_header
Konfigurationapp*/admin.py
würde dann wirksam?Es gibt eine einfache Möglichkeit, Set Admin-Interface - Header - weisen Sie die aktuelle Server - Betreiber Instanz in
urls.py
wie dieseOder man kann etwas Magie zum Erstellen von Headern in einer separaten Methode implementieren
In einfachen Fällen ist daher keine Unterklasse erforderlich
AdminSite
quelle
admin.site.site_title = 'My site admin'
.urls.py
:from django.contrib import admin
AdminSite
und eine Weile versucht, es zum Laufen zu bringen,autodiscover()
aber schließlich selbst über diese Lösung nachgedacht. Ich habe tatsächlich meinen Override inadmin.py
, was ich für sauberer halte, da er zusammen mit all der anderenIn können
urls.py
Sie die 3 wichtigsten Variablen überschreiben:Referenz: Django-Dokumentation zu diesen Attributen .
quelle
Eine einfache Komplettlösung in Django 1.8.3 basierend auf den Antworten in dieser Frage.
In
settings.py
add:In
urls.py
add:quelle
admin.py
. Wenn Sie es noch nicht haben, erstellen Sie es einfach und vergessen Sie nicht, es hinzuzufügenfrom django.contrib import admin
.ADMIN_SITE_HEADER
Das einzige, was hier zählt, ist die Zeile inurls.py
Der einfachste Weg, dies zu tun, stellen Sie sicher, dass Sie haben
und fügen Sie diese dann einfach unten
url.py
in Ihrer Hauptanwendung hinzuquelle
Fügen Sie für Django 2.1.1 die folgenden Zeilen hinzu
urls.py
quelle
Wie Sie in den Vorlagen sehen können , wird der Text über das Lokalisierungsframework bereitgestellt (beachten Sie die Verwendung des
trans
Vorlagen-Tags). Sie können Änderungen an den Übersetzungsdateien vornehmen, um den Text zu überschreiben, ohne eine eigene Kopie der Vorlagen zu erstellen.mkdir locale
./manage.py makemessages
Bearbeiten
locale/en/LC_MESSAGES/django.po
und diese Zeilen hinzufügen:./manage.py compilemessages
Siehe https://docs.djangoproject.com/de/1.3/topics/i18n/localization/#message-files
quelle
admin.py:
quelle
from django.utils.translation import ugettext_lazy
Vergessen Sie nicht, diese Zeile hinzuzufügen.Zunächst sollten Sie Ihrem Projekt templates / admin / base_site.html hinzufügen. Diese Datei kann sicher überschrieben werden, da es sich um eine Datei handelt, die die Django-Entwickler genau zum Zweck der Anpassung Ihrer Admin-Site vorgesehen haben. Hier ist ein Beispiel dafür, was in die Datei eingefügt werden soll:
Dies ist gängige Praxis. Danach bemerkte ich jedoch, dass ich immer noch eine nervige „Site Administration“ auf der Hauptindexseite des Administrators hatte. Und diese Zeichenfolge befand sich nicht in einer der Vorlagen, sondern in der Administratoransicht. Zum Glück ist es ziemlich einfach zu ändern. Angenommen, Ihre Sprache ist auf Englisch eingestellt, führen Sie die folgenden Befehle in Ihrem Projektverzeichnis aus:
Öffnen Sie nun die Datei locale / de / LC_MESSAGES / django.po und fügen Sie zwei Zeilen nach den Header-Informationen hinzu (die letzten beiden Zeilen dieses Beispiels).
Denken Sie danach daran, den folgenden Befehl auszuführen und den Server Ihres Projekts neu zu laden:
Quelle: http://overtag.dk/wordpress/2010/04/changing-the-django-admin-site-title/
quelle
Ab Django 2.0 können Sie einfach eine einzelne Zeile hinzufügen
url.py
und den Namen ändern.Für ältere Versionen von Django. (<1.11 und früher) müssen Sie bearbeiten
admin/base_site.html
Ändern Sie diese Zeile
zu
Sie können Ihre
django
Version überprüfen durchquelle
Gehen Sie einfach zur Datei admin.py und fügen Sie diese Zeile in die Datei ein:
admin.site.site_header = "My Administration"
quelle
Sie müssen für diese Arbeit keine Vorlage ändern, sondern nur die
settings.py
Ihres Projekts aktualisieren . Gehen Sie zum Ende vonsettings.py
und definieren Sie dies.Auf diese Weise können Sie den Header des Django-Administrators ändern. Darüber hinaus können Sie unter dem folgenden Link mehr über die Anpassung und Einstellungen von Django Admin lesen.
Django Admin-Dokumentation
quelle
Sie können
AdminSite.site_header
diesen Text ändern. Hier ist die Dokumentationquelle
Hierfür gibt es zwei Methoden:
1] Durch Überschreiben
base_site.html
indjango/contrib/admin/templates/admin/base_site.html
: Folgendes ist der Inhalt vonbase_site.html
:Bearbeiten Sie den site_title & site_header im obigen Code-Snippet. Diese Methode funktioniert, ist jedoch nicht empfehlenswert, da es sich um eine statische Änderung handelt.
2] Durch Hinzufügen der folgenden Zeilen im
urls.py
Projektverzeichnis:Diese Methode wird empfohlen, da wir den Site-Header, den Site-Titel und den Index-Titel ohne Bearbeitung ändern können
base_site.html
.quelle
Da ich in meiner App nur die Admin-Oberfläche verwende, füge ich dies in die admin.py ein:
quelle
Sie überschreiben einfach die
admin/base_site.html
Vorlage (kopieren Sie die Vorlage ausdjango.contrib.admin.templates
und fügen Sie sie in Ihr eigenes Admin-Vorlagenverzeichnis ein) und ersetzen denbranding
Block.quelle