Personalizando el sitio de administración de django.

AQ Andres Quiroga Andres Quiroga

Andres Quiroga

Software Engineer
2 min read.

El sitio de administración de django es fácil de configurar, simple de usar y los estilos por defecto son elegantes. En conclusión, el sitio de administración de django es una verdadera maravilla, y un punto diferencial de este framework con respecto a otros.

A pesar de esto, muchas veces nos hemos visto en la necesidad de personalizarlo, ya sea por requerimientos del proyecto como tal, o por el simple deseo de tener una interfaz de usuario diferente.

Una de las opciones que tenemos para modificar los estilos y el javascript nos la ofrece propiamente django, permitiendo agregar

media definitions a las vistas de agregar y cambiar un objeto determinado.

Definendo" class="redactor-autoparser-object">https://gist.github.com/337972... los media definitions de esta manera, simplemente debemos indicar la ruta a los archivos my_styles.css y archivo my_code.js para personalizar el formulario de agragar/edición de un objeto del modelo Article.

Otra opción para cambiar los estilos que por defecto nos ofrece django en nuestro sitio de administración, son las librerías que nos dan otras alternativas basadas en la interfaz de administración de django, como Grappelli 2.3.8, compatible con django 1.3, y la recientemente actualizada versión Grappelli 2.4.0, compatible con django 1.4.

Las anteriores alternativas son útiles en los casos en que los cambios que queremos hacer no sean muy significativos o, cuando simplemente deseemos tener una interfaz de administración que luzca diferente a la que por defecto nos ofrece django. Pero, su uso se puede complicar en la medida en que queramos agregar mas javascript a nuestras plantillas, cuando los cambios empiecen a abarcar la todalidad de la navegabilidad del sitio de administración, y cuando nosotros mismos queremos sobreescribir la totalidad del css.

Cuando este sea el caso, vamos a tener la necesidad de tener un sistema de plantillas a la mano, totalmente editable, que nos permita escribir javascript específico por cada plantilla de forma ordenada (usando compressor), definir estilos como nos plazca y definir distintos comportamientos dependiendo de las variables actuales (Si estamos en la lista de los objetos de un modelo específico o en un formulario determinado).

django-admin-templates-twitter-bootstrap es una librería que nos permite integrar nuestro sítio de administración con twitter bootstrap

(otra opción que al igual que Grappelli, nos ofrece una interfaz alternativa), pero que ademas, nos brinda el "Sistema de plantillas del sitio de administración de django", con el cual tenemos a nuestra dispoción cada plantilla, y nos permite editar contenidos, clases, introducir de forma simple nuevas funcionalidades, definir templatetags... En fin, nos permite tener todo el sitio de administración para que lo personalicemos totalmente como nos plazca. Todo lo que debemos hacer para iniciar es descargar la carpeta admin del repositorio, y agregarla a nuestra carpeta templates en la carpeta principal de nuestro proyecto (La misma en la que tenemos almacenado el archivo settings.py y nuestra carpeta media). Como por arte de mágia, las nuevas plantillas quedan totalmente integradas con nuestro sitio de administración, y solo resta, comenzar a hacer las modificaciones que queramos. Podemos crear un archivo admin_defaults.js y un admin_styles.css específicos para el administrador, crear funciones de javascript por plantilla utilizando compressor, y además, tenemos una estructura totalemnte ordenada (un base.html, una carpeta de includes, etc) para editar de forma simple nuestro sítio de administración.


Written by Andres Quiroga

AQ Andres Quiroga Andres Quiroga

A skilled problem solver, Andres is dedicated to developing innovative and efficient software solutions. With expertise in coding, debugging, and system design, they are passionate about creating applications that are both user-friendly and technically robust.

Newsletter

Subscribe to our newsletter:

Read more

Paginador con drupal 7

El uso de listas es muy común en los desarrollos Web y en ocasiones estas pueden llegar a tener muchos elementos.  Una soluci...

1 min read.

Build Once. Own Forever.