python - theme - Administrador de Django: cambie el texto "Administración de Django" del encabezado
django-admin createsuperuser (13)
A partir de Django 1.7 no es necesario que anule las plantillas. Ahora puede implementar los site_header , site_title
e index_title
en un AdminSite personalizado para cambiar fácilmente el título de la página y el texto del encabezado del sitio de administración. Cree una subclase AdminSite y enganche su instancia en su 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)),
)
Actualización : como lo señaló oxfn, simplemente puede configurar el site_header
en su urls.py
o admin.py
directamente sin subclasificar AdminSite
:
admin.site.site_header = ''My administration''
¿Cómo se puede cambiar el texto de "administración de Django" en el encabezado de administración de django?
No parece estar cubierto en la documentación "Personalización del administrador".
Como puede ver en las templates , el texto se entrega a través del marco de localización (tenga en cuenta el uso de la etiqueta de plantilla trans
). Puede hacer cambios en los archivos de traducción para sobrescribir el texto sin hacer su propia copia de las plantillas.
-
mkdir locale
-
./manage.py makemessages
Edite
locale/en/LC_MESSAGES/django.po
, agregando estas líneas: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
Como solo uso la interfaz de administrador en mi aplicación, puse esto en admin.py:
admin.site.site_header = ''My administration''
En primer lugar, desea agregar templates / admin / base_site.html a su proyecto. Este archivo se puede sobrescribir con seguridad, ya que es un archivo que los desarrolladores de django han tenido la intención de personalizar un poco el sitio de administración. Aquí hay un ejemplo de qué poner en el archivo:
{% 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 %}
Esta es una práctica común. Pero me di cuenta después de esto de que aún me quedaba una molesta "Administración del sitio" en la página principal del índice de administración. Y esta cadena no estaba dentro de ninguna plantilla, sino que estaba dentro de la vista de administrador. Afortunadamente, es bastante fácil de cambiar. Suponiendo que su idioma está configurado en inglés, ejecute los siguientes comandos desde su directorio de proyecto:
$ mkdir locale
$ ./manage.py makemessages -l en
Ahora abra el archivo locale / en / LC_MESSAGES / django.po y agregue dos líneas después de la información del encabezado (las últimas dos líneas de este ejemplo)
"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"
Después de esto, recuerda ejecutar esto y volver a cargar el servidor de tu proyecto:
$ ./manage.py compilemessages
fuente: http://overtag.dk/wordpress/2010/04/changing-the-django-admin-site-title/
En urls.py puedes anular las 3 variables más importantes:
admin.site.site_header = ''My project''
admin.site.index_title = ''Features area''
admin.site.site_title = ''HTML title from adminsitration''
Hay una manera fácil de configurar el encabezado del sitio de administración: urls.py
instancia de administración actual en urls.py
como este
admin.site.site_header = ''My admin''
O uno puede implementar algo de magia de construcción de encabezado en un método diferente
admin.site.site_header = get_admin_header()
Por lo tanto, en casos simples no hay necesidad de subclasificar AdminSite
La manera más fácil de hacerlo, asegúrese de tener
from django.contrib import admin
y luego solo url.py
en la parte inferior de url.py
de tu aplicación principal
admin.site.site_title = "Your App Title"
admin.site.site_header = "Your App Admin"
Puede usar AdminSite.site_header
para cambiar ese texto. Aquí están los docs
Simplemente anula la plantilla admin/base_site.html
(copie la plantilla de django.contrib.admin.templates
y póngala en su propio directorio de plantillas de administración) y reemplace el bloque de branding
.
Una solución completa simple en Django 1.8.3 basada en las respuestas en esta pregunta.
En settings.py
agregue:
ADMIN_SITE_HEADER = "My shiny new administration"
En urls.py
agrega:
from django.conf import settings
admin.site.site_header = settings.ADMIN_SITE_HEADER
no necesita cambiar ninguna plantilla para este trabajo, solo necesita actualizar la settings.py
de su proyecto. Ve a la parte inferior de settings.py
y define esto.
admin.site.site_header = ''My Site Admin''
De esta forma, podría cambiar el encabezado del administrador de Django. Además, puede leer más sobre la personalización y configuración de Django Admin en el siguiente enlace.
Actualización : si está utilizando Django 1.7+, consulte la respuesta a continuación .
Respuesta original de 2011: debe crear su propia plantilla de administrador base_site.html para hacer esto. La forma más fácil es crear el archivo:
/<projectdir>/templates/admin/base_site.html
Debería ser una copia de https://github.com/django/django/blob/master/django/contrib/admin/templates/admin/base_site.html , excepto que incluya su título personalizado:
{% block branding %}
<h1 id="site-name">{% trans ''my cool admin console'' %}</h1>
{% endblock %}
Para que esto funcione, debe tener la configuración correcta para su proyecto, es decir, en settings.py:
- Asegúrese de que ''/ projectdir / templates /'' se agregue a TEMPLATE_DIRS
- Asegúrate de que ''django.template.loaders.filesystem.Loader'' se haya agregado a TEMPLATE_LOADERS
Consulte http://docs.djangoproject.com/en/dev/ref/settings/ para obtener más información sobre settings.py
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'')