# Documentation Django 3.1.9.dev

# 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.