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 (évidemment).
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 :
- 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 dansMEDIA_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. - Ajoutez le champ
FileField
ouImageField
à votre modèle, en définissant l’optionupload_to
pour indiquer dans quel sous-répertoire deMEDIA_ROOT
les fichiers doivent être téléversés. - 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’attributurl
offert par Django. Par exemple, considérant unImageField
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 simplement un dictionnaire commun dans le contexte du gabarit.
La bonne solution est d’utiliser un RequestContext
. Les détails sur comment s’y prendre se trouvent ici : Utilisation de RequestContext.