Saltar a contenido

Personalizar el Panel Administrativo de Django

En resumen

Personalizar el panel de administración de Django permite adaptar su idioma, títulos, colores y estilos a las necesidades del proyecto. Además, es posible utilizar temas de terceros como django-admin-interface para modificar su apariencia de forma sencilla.

Django es conocido por su rapidez en el desarrollo y su potente sistema de administración listo para usarse. Desde el momento en que creas un nuevo proyecto con Django, el panel de administración se configura automáticamente, ofreciendo una interfaz para gestionar modelos, usuarios, permisos y mucho más.

Sin embargo, es común que, a medida que avanzamos en el desarrollo de nuestra aplicación, necesitemos personalizar este panel para adaptarlo a las necesidades específicas de nuestro proyecto. Afortunadamente, Django facilita esta personalización tanto en términos de apariencia como de funcionalidad.

Setup

1. Nuevo proyecto

A continuación, selecciona tu plataforma y sigue los pasos indicados para configurar un nuevo proyecto con Django.

Si ya tienes un proyecto

Las siguientes instrucciones están pensadas para configurar un proyecto Django desde cero. Si ya tienes un proyecto Django creado y configurado, no despliegues esta sección y continúa con el siguiente paso del post.

Ver Instrucciones

1. Abrir el símbolo de sistema

Presiona Win+R para abrir la ventana Ejecutar. Escribe cmd y presiona Enter para abrir el Símbolo del sistema (CMD).

Abrir CMD

Abrir el símbolo del sistema (CMD)

2. Ir a la ubicación deseada

Una vez que tengas el CMD abierto, usa el comando cd para navegar a la carpeta donde deseas crear tu proyecto. Por ejemplo, si deseas ir a la carpeta Documentos:

cd %UserProfile%\Documents #(1)!
  1. Ingresa a la carpeta Documentos del usuario actual.

3. Crear la carpeta del proyecto y acceder a ella

Ejecuta el siguiente comando reemplazando mi-proyecto por el nombre deseado:

mkdir //PROJECT// #(1)!
cd //PROJECT// #(2)!
  1. Crea la carpeta del proyecto
  2. Ingresa a la carpeta creada anteriormente

4. Crear el entorno virtual

Ejecuta el siguiente comando para crear un entorno virtual en la carpeta del proyecto:

python -m venv .venv #(1)!
  1. Crea un entorno virtual de Python llamado .venv.

5. Activar el entorno virtual

Ejecuta el siguiente comando para activar el entorno virtual:

.\.venv\Scripts\activate

Una vez activado, deberías ver (.venv) al comienzo de la línea de comandos.

(.venv) C:\Users\mcherrera\nuevo-proyecto

Ahora tenemos un entorno limpio y listo para trabajar.

6. Instalar Django en el entorno virtual

Una vez que el entorno virtual está activado, instala Django con el siguiente comando:

(.venv) pip install django

7. Generar un nuevo

Con la herramienta django-admin y el comando startproject se puede generar automáticamente la estructura inicial de un nuevo proyecto Django.

(.venv) django-admin startproject _site .

Utilizamos un punto . al final del comando para generar el proyecto en el directorio actual, evitando que Django cree una carpeta adicional con el nombre del proyecto.

8. Archivos del proyecto

Una vez generado, tendrás disponible el archivo manage.py en el proyecto:

Archivos del proyecto
 mi-proyecto
├──  _site
│   ├──  __init__.py #(1)!
│   ├──  asgi.py #(2)!
│   ├──  settings.py #(3)!
│   ├──  urls.py #(4)!
│   └──  wsgi.py #(5)!
├──  .venv #(6)!
└──  manage.py #(7)!
  1. Inicializa el paquete Python del proyecto Django.
  2. Configura el punto de entrada ASGI para servidores asíncronos.
  3. Contiene la configuración principal del proyecto Django.
  4. Define las rutas y URLs del proyecto.
  5. Configura el punto de entrada WSGI para servidores web tradicionales.
  6. Contiene el entorno virtual de Python del proyecto.
  7. Permite administrar el proyecto mediante comandos de Django.

El archivo manage.py permite administrar y ejecutar distintas tareas del proyecto Django, como iniciar el servidor de desarrollo, ejecutar migraciones y crear aplicaciones.

1. Abrir la terminal

Presiona las teclas Ctrl+Alt+T o busca Terminal en tu lanzador de aplicaciones para abrir una nueva Terminal.

Abrir Terminal

Abrir Terminal en Linux

2. Navegar a la ubicación deseada

Una vez que tengas la terminal abierta, usa el comando cd para navegar a la carpeta donde deseas crear el proyecto Django. Por ejemplo, ir a Documentos:

Terminal
cd ~/Documents

3. Crear la carpeta del proyecto y acceder a ella

Ejecuta el siguiente comando reemplazando mi-proyecto por el nombre que deseas:

Terminal
mkdir //PROJECT// #(1)!
cd //PROJECT// #(2)!
  1. Crea la carpeta del proyecto
  2. Ingresa a la carpeta creada anteriormente

4. Crear el entorno virtual

Terminal
python3 -m venv .venv

5. Activar el entorno virtual

Terminal
source .venv/bin/activate

Una vez activado, deberías ver (.venv) al comienzo de la terminal.

6. Instalar Django en el entorno virtual

Una vez que el entorno virtual está activado, instala Django con el siguiente comando:

Terminal
(.venv) pip install django

7. Generar un nuevo

Con la herramienta django-admin y el comando startproject se puede generar automáticamente la estructura inicial de un nuevo proyecto Django.

Terminal
(.venv) django-admin startproject _site .

Utilizamos un punto . al final del comando para generar el proyecto en el directorio actual, evitando que Django cree una carpeta adicional con el nombre del proyecto.

8. Archivos del proyecto

Una vez generado, tendrás disponible el archivo manage.py en el proyecto:

Archivos del proyecto
 mi-proyecto
├──  _site
│   ├──  __init__.py #(1)!
│   ├──  asgi.py #(2)!
│   ├──  settings.py #(3)!
│   ├──  urls.py #(4)!
│   └──  wsgi.py #(5)!
├──  .venv #(6)!
└──  manage.py #(7)!
  1. Inicializa el paquete Python del proyecto Django.
  2. Configura el punto de entrada ASGI para servidores asíncronos.
  3. Contiene la configuración principal del proyecto Django.
  4. Define las rutas y URLs del proyecto.
  5. Configura el punto de entrada WSGI para servidores web tradicionales.
  6. Contiene el entorno virtual de Python del proyecto.
  7. Permite administrar el proyecto mediante comandos de Django.

El archivo manage.py permite administrar y ejecutar distintas tareas del proyecto Django, como iniciar el servidor de desarrollo, ejecutar migraciones y crear aplicaciones.

1. Abrir la terminal de comandos

Presiona Cmd+Space para abrir Spotlight, luego escribe terminal y presiona Enter

Abrir Terminal en MacOS

Abrir Terminal en macOS

2. Navegar a la ubicación deseada

Una vez que tengas la terminal abierta, usa el comando cd para navegar a la carpeta donde deseas crear el proyecto Django. Por ejemplo, ir a Documentos:

Terminal
cd ~/Documents

3. Crear la carpeta del proyecto y acceder a ella

Ejecuta el siguiente comando reemplazando mi-proyecto por el nombre que deseas:

Terminal
mkdir //PROJECT// #(1)!
cd //PROJECT// #(2)!
  1. Crea la carpeta del proyecto
  2. Ingresa a la carpeta creada anteriormente

4. Crear el entorno virtual

Terminal
python3 -m venv .venv

5. Activar el entorno virtual

Terminal
source .venv/bin/activate

Una vez activado, deberías ver (.venv) al comienzo de la terminal.

6. Instalar Django en el entorno virtual

Una vez que el entorno virtual está activado, instala Django con el siguiente comando:

Terminal
(.venv) pip install django

7. Generar un nuevo

Con la herramienta django-admin y el comando startproject se puede generar automáticamente la estructura inicial de un nuevo proyecto Django.

Terminal
(.venv) django-admin startproject _site .

Utilizamos un punto . al final del comando para generar el proyecto en el directorio actual, evitando que Django cree una carpeta adicional con el nombre del proyecto.

8. Archivos del proyecto

Una vez generado, tendrás disponible el archivo manage.py en el proyecto:

Archivos del proyecto
 mi-proyecto
├──  _site
│   ├──  __init__.py #(1)!
│   ├──  asgi.py #(2)!
│   ├──  settings.py #(3)!
│   ├──  urls.py #(4)!
│   └──  wsgi.py #(5)!
├──  .venv #(6)!
└──  manage.py #(7)!
  1. Inicializa el paquete Python del proyecto Django.
  2. Configura el punto de entrada ASGI para servidores asíncronos.
  3. Contiene la configuración principal del proyecto Django.
  4. Define las rutas y URLs del proyecto.
  5. Configura el punto de entrada WSGI para servidores web tradicionales.
  6. Contiene el entorno virtual de Python del proyecto.
  7. Permite administrar el proyecto mediante comandos de Django.

El archivo manage.py permite administrar y ejecutar distintas tareas del proyecto Django, como iniciar el servidor de desarrollo, ejecutar migraciones y crear aplicaciones.

Una vez que hayas creado y configurado tu proyecto, Django incluye un panel administrativo listo para usarse. Sin embargo, para acceder a él, es necesario completar algunos pasos previos:

3. Ejecutar Migraciones

terminal
python manage.py migrate

3. Crear un superusuario

Para acceder al panel administrativo necesitamos un usuario con permisos de administración.

El superusuario es una cuenta con todos los permisos administrativos del proyecto y se utiliza para iniciar sesión en el panel de administración. Para crear esta cuenta, ejecuta el siguiente comando:

(.venv) python manage.py createsuperuser
(.venv) python manage.py createsuperuser
Username (leave blank to use 'marco'): admin
Email address: admin@admin.cl
Password: ******
Password (again): ******
This password is too short. It must contain at least 8 characters.
This password is too common.
This password is entirely numeric.
Bypass password validation and create user anyway? [y/N]: y
Superuser created successfully.

Una vez que hayas completado el comando con la información requerida, se agregará un nuevo administrador a la base de datos. Ahora, reinicia el servidor de desarrollo para probar el inicio de sesión:

(.venv) python manage.py runserver
(.venv) python manage.py runserver 
Watching for file changes with StatReloader
Performing system checks...

System check identified no issues (0 silenced).
September 06, 2026 - 23:55:22
Django version 6.1.1, using settings '_site.settings'
Starting WSGI development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

WARNING: This is a development server. Do not use it in a production setting. Use a production WSGI or ASGI server instead.
For more information on production servers see: https://docs.djangoproject.com/en/6.1/howto/deployment/

Personalización básica

1. Cambio de idioma

Django viene con soporte para múltiples idiomas. En nuestro caso, desearíamos cambiar el idioma del panel administrativo al español. Para ello, debemos realizar lo siguiente.

settings.py
105
106
107
108
109
110
111
LANGUAGE_CODE = "es-cl"

TIME_ZONE = "America/Santiago"

USE_I18N = True

USE_TZ = True
Abrir la configuración
 ...
├──  _site
│   ├──  __init__.py
│   ├──  asgi.py
│   ├──  settings.py
│   ├──  urls.py
│   └──  wsgi.py
├──  .venv
└──  manage.py

2. Cambiar títulos

Cuando se ingresa al login del panel de administración, así como al acceder a este, el título que viene por defecto es «Administración de Django», que aparece en la parte superior. Para cambiar este título, se requiere abrir el archivo urls.py o un archivo de configuración similar, utilizando las propiedades específicas de admin.site: site_header, site_title e index_title.

urls.py
17
18
19
20
21
22
23
24
25
26
from django.contrib import admin
from django.urls import path

admin.site.site_header = "Mi sitio web" # (1)!
admin.site.site_title = "Portal de mi web" # (2)!
admin.site.index_title = "Bienvenido" # (3)!

urlpatterns = [
    path("admin/", admin.site.urls),
]
  1. admin.site.site_header: Título que se muestra en la parte superior del panel
  2. site_title: Título en la pestaña del navegador
  3. index_title: Título en la página principal del panel
Abrir el archivo urls
 ...
├──  _site
│   ├──  __init__.py
│   ├──  asgi.py
│   ├──  settings.py
│   ├──  urls.py
│   └──  wsgi.py
├──  .venv
└──  manage.py

La siguiente ilustración muestra un ejemplo de los cambios aplicados, comparando el antes y el después de la configuración.

cambiar títulos

Figura 2. Panel de administración antes y después de personalizar sus títulos.

3. Personalizar paleta de colores

Desde Django 3.2, es posible personalizar los colores del panel de administración mediante variables CSS. Para realizar esta modificación, primero debemos crear una plantilla para sobrescribir el estilo del administrador:

Añadir un directorio para templates

Si el proyecto aún no cuenta con una aplicación, primero debemos crear el directorio templates/ en la raíz del proyecto y configurarlo en settings.py para que Django pueda encontrar las plantillas.

settings.py
54
55
56
57
58
59
60
TEMPLATES = [
    {
        # ...
        "DIRS": [BASE_DIR / "templates"],  # (1)!
        # ...
    },
]
  1. DIRS: Define los directorios donde Django buscará las plantillas del proyecto.
Abrir el archivo setting
 ...
├──  _site
│   ├──  __init__.py
│   ├──  asgi.py
│   ├──  settings.py
│   ├──  urls.py
│   └──  wsgi.py
├──  .venv
└──  manage.py

Para sobrescribir una plantilla del panel administrativo, debemos crearla dentro de templates/admin/, manteniendo la misma estructura de directorios utilizada por Django. En este caso, crearemos base.html, que reemplazará la plantilla base del administrador.

Estructura de archivos
 ...
├──  _site
├──  templates
│   └──  admin
│       └──  base.html
├──  .venv
└──  manage.py

En base.html, heredamos la plantilla original del administrador y sobrescribimos el bloque extrastyle para definir los colores personalizados:

Variables para cada modo

Dentro de :root se definen las variables utilizadas por defecto. Para controlar los colores de cada tema, Django también permite sobrescribir las variables dentro de los selectores correspondientes al modo claro y oscuro.

core/templates/admin/base.html
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
{% extends "admin/base.html" %}

{% block extrastyle %}

  <style>

    :root {
      /* Variables generales */
      --primary: #f0c;
      --secondary: #d09;
    }
    html[data-theme="light"] {
      /* Variables del modo claro */
        --primary: rgb(49, 98, 233);
        --secondary: rgb(77, 62, 207);
    }
    html[data-theme="dark"] {
      /* Variables del modo oscuro */
      --primary: rgb(12, 188, 6);
      --secondary: rgb(5, 111, 37);
    }
  </style>
{% endblock %}

La idea importante: :root actúa como conjunto de valores generales o predeterminados, mientras que html[data-theme="light"] y html[data-theme="dark"] permiten establecer valores específicos para cada tema.

Para cambiar el logo del panel administrativo, podemos sobrescribir admin/base_site.html. Esta plantilla hereda de admin/base.html y permite modificar el bloque branding, donde Django muestra el nombre del sitio.

Ahora, debemos crear el archivo en la misma estructura:

Estructura de archivos
 ...
├──  templates
│   └──  admin
│       ├──  base.html
│       └──  base_site.html
├──  _site
├──  .venv
└──  manage.py

Luego, en base_site.html, cargamos las etiquetas de archivos estáticos y sobrescribimos el bloque branding:

templates/admin/base_site.html
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
{% extends "admin/base.html" %}
{% load static %}

{% block branding %}
  <h1 id="site-name">
    <a href="{% url 'admin:index' %}">
      <img src="{% static 'img/logo.svg' %}" alt="Mi sitio web">
      Mi sitio web
    </a>
  </h1>
{% endblock %}

En este caso:

  1. {% extends "admin/base.html" %} permite conservar la estructura original del administrador.
  2. {% load static %} habilita el uso de archivos estáticos.
  3. El bloque branding permite modificar el nombre y el logo mostrados en el encabezado.
  4. {% static 'img/logo.svg' %} obtiene la ruta del logo desde el directorio de archivos estáticos.

El logo debe ubicarse dentro del directorio configurado para archivos estáticos:

 static
└──  img
    └──  logo.svg

La plantilla original base_site.html de Django puede consultarse como referencia en el repositorio oficial: django/contrib/admin/templates/admin/base_site.html