Fantomas’side

Weblog open-source

Changer son thème d'administration Django

Je sais pas pour vous, mais l'administration de Django, je peux plus la voir. :) 

Même si elle reste très jolie est bien pensée, ses teintes bleues me sortent par les yeux, et je voulais en changer.

Je me suis penché sur la question en me disant qu'il était largement possible d'effectuer un changement, au minimum des teintes. Mais n'étant pas graphiste et estimant la charge de travail à fournir, j'ai abandonné cette idée.

Mais je suis récemment tombé sur un projet intéressant appelé django-grappelli. Le but étant de fournir une alternative aux templates et au style appliqué dans le module d'administration de Django, exactement ce que je recherchais.

De plus le graphisme m'a tout de suite semblé très clair et soigné, je me suis laissé donc conquérir par ce thème. Quelques screenshots ici. Le petit plus de ce projet, c'est le fait de pouvoir facilement insérer ses propres liens en raccourcis dans l'administration. Un must.

Par contre il existe un gros bémol avec ce thème, son installation.
D'après les explications de la documentation, les templates et les médias doivent se substituer à ceux originalement fournis dans la distribution de Django.

Donc en plus de vous conseiller d'installer ce module, je vais vous détailler comment l'installer de manière moins intrusive et donc plus propre. :)

Le projet étant composé de 2 dossiers, templates et media, il faut s'arranger pour que Django utilise ces 2 dossiers pour effectuer le rendu de l'administration.

Templates

La partie la plus facile, est de changer les templates utilisés par l'admin. Dans votre fichier settings, il suffit de rajouter un lien vers les templates du thème dans la section TEMPLATE_DIRS. Ce qui va donner la priorité à ces templates.

TEMPLATE_DIRS = (
    ...,
    '<chemin vers django-grappelli>/templates/',
    )

Medias

Désormais il va falloir changer le comportement de l'acquisition des fichiers statiques dans l'administration. Par défaut le module charge ces fichiers de manière relatives, en ce basant sur la variable ADMIN_MEDIA_PREFIX.

On va changer cela en y mettant une url absolue vers nos médias.

ADMIN_MEDIA_PREFIX = 'http://<mondomaine.com>/grappeli/'

Ensuite il reste plus qu'a établir un lien sur l'url /grappelli/ sur le serveur web pour que les nouveaux fichiers comme la css, soient chargés.

Le tour est joué ! En espérant que ce thème vous plaira et vous motiveras pourquoi pas à faire votre propre thème d'administration pour Django.