Comment modifier le texte "Django administration" dans l'en-tête de l'administration django ?
Cela ne semble pas être couvert dans la documentation "Personnaliser l'administration".
Comment modifier le texte "Django administration" dans l'en-tête de l'administration django ?
Cela ne semble pas être couvert dans la documentation "Personnaliser l'administration".
Depuis Django 1.7, vous n'avez plus besoin de remplacer les modèles. Vous pouvez maintenant implémenter en-tête du site , site_title
y index_title
d'un attribut personnalisé AdminSite afin de modifier facilement le titre de la page et le texte de l'en-tête du site d'administration. Créez une sous-classe AdminSite et connectez votre instance à votre 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)),
)
Mise à jour : Comme l'a fait remarquer oxfn, vous pouvez simplement définir l'option site_header
en su urls.py
o admin.py
directement sans sous-classer AdminSite
:
admin.site.site_header = 'My administration'
Un message d'erreur "Vous n'avez pas le droit de modifier quoi que ce soit" s'affiche lorsque j'essaie d'accéder au répertoire /myadmin/. Il semble que je doive appeler .autodiscover, mais Django 1.7 est censé l'appeler automatiquement. Un indice ?
@DavidArcos Vous devez enregistrer vos modèles sur le nouveau site de la Commission européenne. admin_site
que vous avez créé. Comme admin_site.register(MyModel, ModelAdmin)
Si un en-tête dans django.auth.views doit également être personnalisé (cela dépend de l'option admin/base_site.html
(par exemple, password_reset), il faut alors aussi extra_context
doit être utilisé dans les urls : par exemple url(r'^password_reset/$', auth_views.password_reset, name='admin_password_reset', kwargs={'extra_context': {'site_header': "My administration"}})
Il existe un moyen simple de définir l'en-tête du site d'administration - l'attribuer à l'instance d'administration actuelle dans urls.py
comme ceci
admin.site.site_header = 'My admin'
Ou bien on peut mettre en œuvre une certaine magie de construction d'en-tête dans une méthode séparée.
admin.site.site_header = get_admin_header()
Ainsi, dans les cas simples, il n'y a pas besoin de sous-classer AdminSite
Je l'ai ajouté dans mon url.py
juste après urlpattern. Mais cela ne fonctionne pas lorsque j'exécute le site avec nginx.
@AlexJolig nginx ne devrait pas être un problème. Quel backenf que vous utilisez ? L'avez-vous redémarré ?
La première méthode a fonctionné. Je ne sais pas vraiment quel est le problème pour l'instant.
Mise à jour : Si vous utilisez Django 1.7+, consultez la page réponse ci-dessous .
Réponse originale de 2011 : Vous devez créer votre propre administrateur base_site.html
pour ce faire. Le moyen le plus simple est de créer le fichier :
/<projectdir>/templates/admin/base_site.html
Il doit s'agir d'une copie du original base_site.html
sauf pour mettre votre titre personnalisé :
{% block branding %}
<h1 id="site-name">{% trans 'my cool admin console' %}</h1>
{% endblock %}
Pour que cela fonctionne, vous devez avoir les paramètres corrects pour votre projet, à savoir dans settings.py
:
/projectdir/templates/
est ajouté dans TEMPLATE_DIRS
.django.template.loaders.filesystem.Loader
est ajouté dans TEMPLATE_LOADERS
.Voir la documentation pour plus d'informations sur settings.py
.
Notez également que vous pouvez {% extends "admin/base.html" %}
en /<projectdir>/templates/admin/base_site.html
et redéfinissez simplement le(s) bloc(s) dont vous avez besoin, par ex. {% block branding %}...{% endblock %}
.
Même si elle est assez ancienne, je tiens à ajouter que vous devez placer votre application où vous définissez ce modèle avant 'django.contrib.admin', dans INSTALLED_APPS.
Comme vous pouvez le voir dans le modèles le texte est livré par le biais du cadre de localisation (notez l'utilisation de la balise trans
). Vous pouvez apporter des modifications aux fichiers de traduction pour remplacer le texte sans faire votre propre copie des modèles.
mkdir locale
./manage.py makemessages
Modifier locale/en/LC_MESSAGES/django.po
en ajoutant ces lignes :
msgid "Django site admin"
msgstr "MySite site admin"
msgid "Django administration"
msgstr "MySite administration"
./manage.py compilemessages
Ver https://docs.djangoproject.com/en/1.3/topics/i18n/localization/#message-files
Tout d'abord, vous devez ajouter templates/admin/base_site.html à votre projet. Ce fichier peut être écrasé en toute sécurité puisqu'il s'agit d'un fichier que les développeurs de Django ont prévu dans le but précis de personnaliser un peu votre site d'administration. Voici un exemple de ce qu'il faut mettre dans ce fichier :
{% 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 %}
C'est une pratique courante. Mais j'ai remarqué après cela que je me retrouvais toujours avec un ennuyeux "Administration du site" sur la page d'index de l'administration principale. Et cette chaîne ne se trouvait dans aucun des modèles, mais plutôt dans la vue d'administration. Heureusement, c'est assez facile à changer. En supposant que votre langue est l'anglais, exécutez les commandes suivantes depuis le répertoire de votre projet :
$ mkdir locale
$ ./manage.py makemessages -l en
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)
"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"
Après cela, n'oubliez pas d'exécuter la commande suivante et de recharger le serveur de votre projet :
$ ./manage.py compilemessages
source : http://overtag.dk/wordpress/2010/04/changing-the-django-admin-site-title/
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
0 votes
Ce sujet est traité dans le tutoriel .
0 votes
La meilleure réponse est en dessous de