FAQ : utilisation de Django

Pourquoi ai-je une erreur sur l’importation de DJANGO_SETTINGS_MODULE?

Assurez-vous que :

  • La variable d’environnement DJANGO_SETTINGS_MODULE est définie sur un module Python complètement qualifié (par ex. mysite.settings).

  • Ledit module se trouve dans sys.path (import mysite.settings devrait fonctionner).

  • Le module ne contient pas d’erreurs de syntaxe.

Je ne supporte pas votre langage de gabarit. Suis-je obligé de l’utiliser ?

Il nous arrive de penser que notre moteur de gabarit est la meilleure chose depuis le lard en morceaux, mais nous reconnaissons que le choix d’un langage de gabarit est proche de celui d’une religion. Il n’y a rien dans Django qui nécessite l’utilisation de son langage de gabarit, donc si vous êtes attaché à Jinja2, Mako, ou quoi que ce soit, n’hésitez pas à les utiliser.

Dois-je utiliser votre couche modèle/base de données ?

Non. Tout comme le système de gabarit, la couche modèle/base de données est découplée du reste du système.

La seule exception étant : si vous utilisez une autre bibliothèque de base de données, vous ne pourrez pas utiliser le site d’administration généré automatiquement par Django. Cette application est couplée à la couche de base de données de Django.

Comment puis-je utiliser les champs image et fichier ?

L’utilisation d’un champ FileField ou d’un champ ImageField dans un modèle implique quelques étapes :

  1. Dans votre fichier de réglages, vous devez indiquer dans MEDIA_ROOT le chemin d’accès absolu vers un répertoire où Django peut enregistrer les fichiers téléversés (pour des raisons de performance, ces fichiers ne sont pas stockés en base de données). Indiquez dans MEDIA_URL l’URL publique de base correspondant à ce répertoire. Assurez-vous que ce répertoire soit accessible en écriture par l’utilisateur du serveur Web.

  2. Ajoutez le champ FileField ou ImageField à votre modèle, en définissant l’option upload_to pour indiquer dans quel sous-répertoire de MEDIA_ROOT les fichiers doivent être téléversés.

  3. Tout ce qui sera stocké dans la base de données est le chemin d’accès au fichier (relatif à MEDIA_ROOT). Il est très commode et courant d’utiliser l’attribut url offert par Django. Par exemple, considérant un ImageField nommé mug_shot, vous pouvez obtenir l’URL absolue de cette image dans un gabarit avec {{ object.mug_shot.url }}.

Comment puis-je rendre une variable disponible pour tous mes gabarits ?

Parfois, vos gabarits ont tous besoin de la même chose. Un exemple courant serait des menus générés dynamiquement. À première vue, il semble logique d’ajouter un dictionnaire commun dans le contexte du gabarit.

La meilleure manière de faire cela avec Django est d’utiliser un RequestContext. Les détails sur comment s’y prendre se trouvent ici : Utilisation de RequestContext.

Back to Top