samurailawnnomo
¿Cómo puedo cambiar el título del sitio? Django site admin
el encabezado del sitio Django administration
y el título del índice Site administration
en el administrador de Django?
Reto Aebersold
A partir de Django 1.7, no es necesario anular las plantillas. Ahora puede implementar sitio_encabezado, site_title
y index_title
atributos en una costumbre AdminSitio para cambiar fácilmente el título de la página del sitio de administración y el texto del encabezado. Cree una subclase de AdminSite y conecte su instancia a su URLconf:
administrador.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)),
)
Actualizar: Como lo señaló oxfn, simplemente puede configurar el site_header
en tus urls.py
o admin.py
directamente sin subclasificar AdminSite
:
admin.site.site_header="My administration"
-
Esto arroja un mensaje de error “No tiene permiso para editar nada” cuando intento acceder a /myadmin/. Parece que debería llamar a .autodiscover, pero se supone que Django 1.7 se llama automáticamente. ¿Cualquier pista?
–David Arcos
29 de julio de 2014 a las 16:53
-
@DavidArcos Debe registrar sus modelos en new
admin_site
que creaste. Comoadmin_site.register(MyModel, ModelAdmin)
– Andrei Fedoseev
1 de agosto de 2014 a las 13:06
-
Si también se debe personalizar un encabezado en django.auth.views (eso depende de
admin/base_site.html
plantilla, por ejemplo, password_reset) entonces tambiénextra_context
debe usarse en URL: por ejemplourl(r'^password_reset/$', auth_views.password_reset, name='admin_password_reset', kwargs={'extra_context': {'site_header': "My administration"}})
– Hynekcer
18 de febrero de 2017 a las 11:55
-
Algo que debe saber sobre esta forma es que solo funcionará con las páginas de administración estándar, si de su lado en otra aplicación está agregando sus propias páginas de administración (extendiendo la plantilla base de administración), siempre tomarán la “Administración de Django” predeterminada. título.
– Kedare
31 de marzo de 2017 a las 9:12
-
@oxfn Si tengo más de una aplicación, la
admin.site.site_header
configuración en la queapp*/admin.py
haría efecto?– nalzok
13 de mayo de 2017 a las 9:45
Hay una manera fácil de configurar el encabezado del sitio de administración: asígnelo a la instancia de administración actual en urls.py
como esto
admin.site.site_header="My admin"
O uno puede implementar algo de magia de creación de encabezados en un método separado
admin.site.site_header = get_admin_header()
Por lo tanto, en casos simples no hay necesidad de subclasificar AdminSite
-
La primera forma funcionó. Realmente no sé cuál era el problema en este momento. gracias
– Ghasem
11 de febrero de 2015 a las 15:45
-
Si está cambiando el encabezado, probablemente también desee cambiar el título del sitio, lo que se puede lograr con:
admin.site.site_title = 'My site admin'
.– mcastillo
18 de julio de 2015 a las 21:15
-
Aquí hay una cadena de importación para agregar a
urls.py
:from django.contrib import admin
– sergio
04/01/2016 a las 22:00
-
Ojalá hubiera encontrado esto primero… Prestando atención a los documentos, subclasifiqué
AdminSite
y pasó un tiempo tratando de hacer que funcione conautodiscover()
pero finalmente pensé en esta solución por mi cuenta. De hecho, tengo mi anulación enadmin.py
que creo que es más limpio ya que se mantiene junto con toda la otra lógica relacionada con la administración– usuario193130
19 de abril de 2016 a las 0:20
-
consulte la lista de todos los atributos que puede cambiar en docs.djangoproject.com/en/1.11/ref/contrib/admin/…
– Sergio Morstabilini
29 de abril de 2017 a las 9:32
Gregorio
En urls.py
puede anular las 3 variables más importantes:
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"
Referencia: Documentación de Django sobre estos atributos..
-
Esta debería ser la respuesta CORRECTA a esta pregunta. Esta es la solución más apropiada y elegante.
– Gregorio
25 de noviembre de 2020 a las 12:37
-
hay una manera de tener
username
de usuario registrado con título de índice Por ejemplo:admin.site.index_title = request.user.username+' Features area'
– Azhar Uddin Jeque
31/01/2022 a las 11:00
usuario608133
Actualizar: Si está utilizando Django 1.7+, vea la respuesta a continuación.
Respuesta original de 2011:
Necesitas crear tu propio administrador base_site.html
plantilla para hacer esto. La forma más fácil es crear el archivo:
/<projectdir>/templates/admin/base_site.html
Esta debe ser una copia de la original base_site.html
excepto poner 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
:
- Cerciorarse
/projectdir/templates/
se agrega enTEMPLATE_DIRS
. - Cerciorarse
django.template.loaders.filesystem.Loader
se agrega enTEMPLATE_LOADERS
.
Consulte los documentos para obtener más información sobre settings.py
.
kuzavas
Una solución simple y completa en Django 1.8.3 basada en las respuestas de esta pregunta.
En settings.py
agregar:
ADMIN_SITE_HEADER = "My shiny new administration"
En urls.py
agregar:
from django.conf import settings
admin.site.site_header = settings.ADMIN_SITE_HEADER
-
¿Hay un mejor lugar para hacer esto que usar urls.py?
– Venkat Kotra
13/03/2016 a las 20:21
-
@VenkatKotra Sí, en
admin.py
. Si aún no lo tienes, simplemente créalo y no olvides agregarfrom django.contrib import admin
.– usuario193130
19 de abril de 2016 a las 0:26
-
La forma recomendada de importar la configuración es a través de – “desde la configuración de importación de django.conf” (ver docs.djangoproject.com/en/1.9/topics/settings/…)
– yoniLavi
3 de julio de 2016 a las 3:13
-
No hay una configuración que Django mire llamada
ADMIN_SITE_HEADER
lo único que importa aquí es la línea enurls.py
– Flamm
30 de mayo de 2018 a las 7:57
-
Seguí de esta manera y primero definí el nombre en la configuración y luego lo importé a url.py como se explicó anteriormente. Hice lo mismo para el inicio de sesión y el título html y los tres funcionaron bien. ==> en url.py: {{ from django.conf import settings }} admin.site.site_header = settings.ADMIN_SITE_HEADER admin.site.site_title = settings.ADMIN_SITE_TITLE admin.site.index_title = settings.ADMIN_SITE_INDEX
– HassanSh__3571619
11 de octubre de 2020 a las 4:28
Ganesh
Para Django 2.1.1 agregue las siguientes líneas a urls.py
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"
-
¿Hay un mejor lugar para hacer esto que usar urls.py?
– Venkat Kotra
13/03/2016 a las 20:21
-
@VenkatKotra Sí, en
admin.py
. Si aún no lo tienes, simplemente créalo y no olvides agregarfrom django.contrib import admin
.– usuario193130
19 de abril de 2016 a las 0:26
-
La forma recomendada de importar la configuración es a través de – “desde la configuración de importación de django.conf” (ver docs.djangoproject.com/en/1.9/topics/settings/…)
– yoniLavi
3 de julio de 2016 a las 3:13
-
No hay una configuración que Django mire llamada
ADMIN_SITE_HEADER
lo único que importa aquí es la línea enurls.py
– Flamm
30 de mayo de 2018 a las 7:57
-
Seguí de esta manera y primero definí el nombre en la configuración y luego lo importé a url.py como se explicó anteriormente. Hice lo mismo para el inicio de sesión y el título html y los tres funcionaron bien. ==> en url.py: {{ from django.conf import settings }} admin.site.site_header = settings.ADMIN_SITE_HEADER admin.site.site_title = settings.ADMIN_SITE_TITLE admin.site.index_title = settings.ADMIN_SITE_INDEX
– HassanSh__3571619
11 de octubre de 2020 a las 4:28
Mohamed Abrar Anwar
La forma más fácil de hacerlo, asegúrese de tener
from django.contrib import admin
y luego simplemente agregue estos 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"
Esto está cubierto en el tutorial.
– djvg
9 de diciembre de 2019 a las 12:19
La mejor respuesta está abajo.
– Guettli
15 de diciembre de 2020 a las 20:05