Comment peut-on changer le texte «Administration Django» dans l'en-tête admin django?
Il ne semble pas être couvert dans la documentation "Personnalisation de l'administrateur".
python
django
django-admin
samurailawngnome
la source
la source
Réponses:
Mise à jour : si vous utilisez Django 1.7+, voyez la réponse ci-dessous .
Réponse originale de 2011: vous devez créer votre propre
base_site.html
modèle d' administration pour ce faire. La façon la plus simple est de créer le fichier:Cela devrait être une copie de l' original
base_site.html
, sauf en mettant votre titre personnalisé:Pour que cela fonctionne, vous devez disposer des paramètres corrects pour votre projet, à savoir dans
settings.py
:/projectdir/templates/
est ajouté dansTEMPLATE_DIRS
.django.template.loaders.filesystem.Loader
est ajouté dansTEMPLATE_LOADERS
.Voir les documents pour plus d'informations sur
settings.py
.la source
{% extends "admin/base.html" %}
dans/<projectdir>/templates/admin/base_site.html
et redéfinir simplement le bloc (s) dont vous avez besoin, par exemple{% block branding %}...{% endblock %}
.TEMPLATE_LOADER
paramètre. IlTEMPLATE_DIR
suffit, sembleDepuis Django 1.7, vous n'avez pas besoin de remplacer les modèles. Vous pouvez désormais implémenter site_header ,
site_title
et desindex_title
attributs sur un AdminSite personnalisé afin de modifier facilement le titre de la page et le texte d'en-tête du site d'administration. Créez une sous-classe AdminSite et connectez votre instance à votre URLconf:admin.py:
urls.py:
Mise à jour : Comme l'a souligné oxfn, vous pouvez simplement définir le
site_header
dans votreurls.py
ouadmin.py
directement sans sous- classementAdminSite
:la source
admin_site
que vous avez créé. Commeadmin_site.register(MyModel, ModelAdmin)
admin/base_site.html
modèle, par exemple password_reset), ilextra_context
doit également être utilisé dans les URL: par exempleurl(r'^password_reset/$', auth_views.password_reset, name='admin_password_reset', kwargs={'extra_context': {'site_header': "My administration"}})
admin.site.site_header
quelle configurationapp*/admin.py
prendrait effet?Il existe un moyen facile de définir l'en-tête du site d'administration - affectez-le à l'instance d'administration actuelle
urls.py
comme ceciOu on peut implémenter une magie de création d'en-tête dans une méthode distincte
Ainsi, dans les cas simples, il n'est pas nécessaire de sous-classer
AdminSite
la source
admin.site.site_title = 'My site admin'
.urls.py
:from django.contrib import admin
AdminSite
passé un certain temps à essayer de le faire fonctionner,autodiscover()
mais j'ai finalement pensé à cette solution par moi-même. J'ai en fait mon remplacementadmin.py
, qui je pense est plus propre car il est conservé avec toutes les autres logiques liées à l'administrationDans,
urls.py
vous pouvez remplacer les 3 variables les plus importantes:Référence: documentation Django sur ces attributs .
la source
Une solution complète simple dans Django 1.8.3 basée sur les réponses à cette question.
En
settings.py
plus:En
urls.py
plus:la source
admin.py
. Si vous ne l'avez pas déjà, créez-le et n'oubliez pas de l'ajouterfrom django.contrib import admin
.ADMIN_SITE_HEADER
, la seule chose qui compte ici est la ligneurls.py
La façon la plus simple de le faire est de s'assurer
puis ajoutez-les au bas
url.py
de votre application principalela source
Pour Django 2.1.1, ajoutez les lignes suivantes à
urls.py
la source
Comme vous pouvez le voir dans les modèles , le texte est fourni via le framework de localisation (notez l'utilisation de la
trans
balise de modèle). Vous pouvez apporter des modifications aux fichiers de traduction pour remplacer le texte sans créer votre propre copie des modèles.mkdir locale
./manage.py makemessages
Modifiez
locale/en/LC_MESSAGES/django.po
, en ajoutant ces lignes:./manage.py compilemessages
Voir https://docs.djangoproject.com/en/1.3/topics/i18n/localization/#message-files
la source
Accédez simplement au fichier admin.py et ajoutez cette ligne dans le fichier:
admin.site.site_header = "My Administration"
la source
admin.py:
la source
from django.utils.translation import ugettext_lazy
N'oubliez pas d'ajouter cette ligne.Tout d'abord, vous devez ajouter des modèles / admin / base_site.html à votre projet. Ce fichier peut être écrasé en toute sécurité car c'est un fichier que les développeurs Django ont prévu dans le but exact de personnaliser un peu votre site d'administration. Voici un exemple de ce qu'il faut mettre dans le fichier:
C'est une pratique courante. Mais j'ai remarqué après cela qu'il me restait encore une ennuyeuse «Administration du site» sur la page d'index d'administration principale. Et cette chaîne n'était dans aucun des modèles, mais plutôt définie dans la vue d'administration. Heureusement, il est assez facile de changer. En supposant que votre langue est définie sur l'anglais, exécutez les commandes suivantes à partir de votre répertoire de projet:
Ouvrez maintenant le fichier locale / en / LC_MESSAGES / django.po et ajoutez deux lignes après les informations d'en-tête (les deux dernières lignes de cet exemple)
Après cela, n'oubliez pas d'exécuter la commande suivante et de recharger le serveur de votre projet:
source: http://overtag.dk/wordpress/2010/04/changing-the-django-admin-site-title/
la source
Depuis Django 2.0, vous pouvez simplement ajouter une seule ligne dans le
url.py
et changer le nom.Pour les anciennes versions de Django. (<1.11 et versions antérieures), vous devez modifier
admin/base_site.html
Changer cette ligne
à
Vous pouvez vérifier votre
django
version enla source
vous n'avez pas besoin de changer de modèle pour ce travail, il vous suffit de mettre à jour le
settings.py
de votre projet. Allez au bas de lasettings.py
et définissez ceci.De cette façon, vous pourrez changer l'en-tête de l'administrateur de Django. De plus, vous pouvez en savoir plus sur la personnalisation et les paramètres de Django Admin sur le lien suivant.
Documentation d'administration Django
la source
Vous pouvez utiliser
AdminSite.site_header
pour modifier ce texte. Voici les documentsla source
Il existe deux méthodes pour ce faire:
1] En redéfinissant
base_site.html
dansdjango/contrib/admin/templates/admin/base_site.html
: Ce qui suit est le contenubase_site.html
:Modifiez le site_title & site_header dans l'extrait de code ci-dessus. Cette méthode fonctionne mais elle n'est pas recommandée car c'est un changement statique.
2] En ajoutant les lignes suivantes dans
urls.py
le répertoire du projet:Cette méthode est recommandée car nous pouvons changer l'en-tête du site, le titre du site et le titre de l'index sans modification
base_site.html
.la source
Étant donné que j'utilise uniquement l'interface d'administration dans mon application, je mets cela dans le fichier admin.py:
la source
Vous venez de remplacer le
admin/base_site.html
modèle (copiez le modèle à partir dedjango.contrib.admin.templates
et placez dans votre propre répertoire de modèle d'administration) et remplacez lebranding
bloc.la source