Réglages¶
Avertissement
Soyez prudent lorsque vous surchargez les réglages, particulièrement quand la valeur par défaut est une liste ou un dictionnaire non vide, comme STATICFILES_FINDERS
. Prenez soin de conserver les composants requis par les fonctionnalités de Django que vous souhaitez utiliser.
Réglages de base¶
Voici une liste des réglages disponibles au sein de Django et leurs valeurs par défaut. Les réglages fournis par les applications contrib sont énumérés ci-dessous, suivi d’un index des réglages de base par sujet. Pour une introduction sur le sujet, consultez le guide thématique des réglages.
ABSOLUTE_URL_OVERRIDES
¶
Valeur par défaut : {}
(dictionnaire vide)
Un dictionnaire faisant correspondre des chaînes du style "étiquette_app.nom_modèle"
à des fonctions qui acceptent un objet de modèle et renvoient son URL. C’est une façon d’insérer ou de surcharger les méthodes get_absolute_url()
en fonction de l’installation. Par exemple :
ABSOLUTE_URL_OVERRIDES = {
"blogs.blog": lambda o: "/blogs/%s/" % o.slug,
"news.story": lambda o: "/stories/%s/%s/" % (o.pub_year, o.slug),
}
Le nom de modèle utilisé dans ce réglage doit être tout en minuscules, quelle que soit la casse du nom de la classe modèle réelle.
ADMINS
¶
Valeur par défaut : []
(liste vide)
Une liste de toutes les personnes qui reçoivent les notifications d’erreurs dans le code. Lorsque DEBUG=False
et que AdminEmailHandler
est configuré dans LOGGING
(comportement par défaut), Django envoie un courriel à ces personnes contenant les détails des exceptions produites dans le cycle requête/réponse.
Chaque élément de la liste doit être un tuple au format «(nom complet, adresse électronique)». Exemple
[("John", "john@example.com"), ("Mary", "mary@example.com")]
ALLOWED_HOSTS
¶
Valeur par défaut : []
(liste vide)
Une liste de chaînes représentant des noms de domaine/d’hôte que ce site Django peut servir. C’est une mesure de sécurité pour empêcher les attaques d’en-tête Host HTTP, qui sont possibles même avec bien des configurations de serveur web apparemment sécurisées.
Les valeurs de cette liste peuvent être des noms complètement qualifiés (par ex. 'www.example.com'
), auquel cas ils seront comparés exactement (insensible à la casse, port exclu) avec l’en-tête Host
de la requête. Une valeur commençant par un point peut être utilisée comme métacaractère de sous-domaine : '.example.com'
correspondra à example.com
, www.example.com
, et tout autre sous-domaine de example.com
. Une valeur '*'
correspond à tout ; dans ce cas, vous êtes responsable de fournir votre propre validation de l’en-tête Host
(éventuellement dans un middleware ; dans ce cas, le middleware doit figurer en premier dans MIDDLEWARE
).
Django permet également d’écrire un nom de domaine pleinement qualifié (FQDN) dans la liste. Certains navigateurs incluent un point terminal dans l’en-tête Host
; Django l’enlève au moment de la validation d’hôte.
Si l’en-tête Host
(ou X-Forwarded-Host
quand USE_X_FORWARDED_HOST
est actif) ne correspond à aucune valeur de cette liste, la méthode django.http.HttpRequest.get_host()
lèvera SuspiciousOperation
.
Lorsque DEBUG
vaut True
et que ALLOWED_HOSTS
est vide, l’hôte est validé selon ['.localhost', '127.0.0.1', '[::1]']
.
ALLOWED_HOSTS
est aussi contrôlé lors de l’exécution des tests.
Cette validation ne s’applique qu’avec get_host()
; si votre code accède directement à l’en-tête Host
dans request.META
, vous outrepassez cette protection de sécurité.
APPEND_SLASH
¶
Valeur par défaut : True
Si défini à True
et que l’URL de la requête ne correspond à aucun des motifs de l’URLconf et que l’URL ne se termine pas par une barre oblique (slash), Django effectue une redirection HTTP vers la même URL additionnée d’une barre oblique finale. Notez que la redirection peut causer la perte d’éventuelles données envoyées avec une requête POST.
Le réglage APPEND_SLASH
n’est utilisé que si CommonMiddleware
est installé (voir Middleware). Voir aussi PREPEND_WWW
.
CACHES
¶
Valeur par défaut :
{
"default": {
"BACKEND": "django.core.cache.backends.locmem.LocMemCache",
}
}
Un dictionnaire contenant les réglages de tous les caches à utiliser avec Django. C’est un dictionnaire imbriqué dont les contenus sont une correspondance entre les alias des caches et un dictionnaire contenant les options de chacun des caches.
Le réglage CACHES
doit configurer un cache default
(par défaut) ; il est possible d’ajouter autant d’autres caches que souhaité. Si vous utilisez un moteur de cache autre que le cache de mémoire locale ou que vous deviez définir plusieurs caches, d’autres options devront être ajoutées. Les options de cache suivantes sont disponibles.
BACKEND
¶
Valeur par défaut : ''
(Chaîne vide)
Le moteur de cache à utiliser. Les moteurs de cache intégrés à Django sont :
'django.core.cache.backends.db.DatabaseCache'
'django.core.cache.backends.dummy.DummyCache'
'django.core.cache.backends.filebased.FileBasedCache'
'django.core.cache.backends.locmem.LocMemCache'
'django.core.cache.backends.memcached.PyMemcacheCache'
'django.core.cache.backends.memcached.PyLibMCCache'
'django.core.cache.backends.redis.RedisCache'
Vous pouvez utiliser un moteur de cache non livré avec Django en définissant BACKEND
à un chemin complètement qualifié d’une classe de moteur de cache (par ex. monpaquet.moteurs.quelquechose.MonCache
).
KEY_FUNCTION
¶
Une chaîne contenant un chemin pointé vers une fonction (ou tout autre objet exécutable) qui définit la manière de composer un préfixe, une version et une clé pour former une clé de cache finale. L’implémentation par défaut est équivalente à la fonction :
def make_key(key, key_prefix, version):
return ":".join([key_prefix, str(version), key])
Vous pouvez utiliser n’importe quelle fonction de clé, tant que la signature des paramètres est la même.
Consultez la documentation du cache pour plus d’informations.
KEY_PREFIX
¶
Valeur par défaut : ''
(Chaîne vide)
Une chaîne qui sera automatiquement incluse (préfixée par défaut) à toutes les clés de cache utilisées par le serveur Django.
Consultez la documentation du cache pour plus d’informations.
LOCATION
¶
Valeur par défaut : ''
(Chaîne vide)
L’emplacement du cache. Cela peut être un répertoire pour un cache en système de fichiers, un hôte et un port pour le moteur memcache
, ou un identifiant pour un cache en mémoire locale, par ex. :
CACHES = {
"default": {
"BACKEND": "django.core.cache.backends.filebased.FileBasedCache",
"LOCATION": "/var/tmp/django_cache",
}
}
OPTIONS
¶
Valeur par défaut : None
Paramètres supplémentaires à transmettre au moteur de cache. Les paramètres disponibles varient en fonction du moteur de cache.
Certaines informations sur les paramètres disponibles peuvent être trouvées dans la documentation des paramètres de cache. Pour plus d’informations, consultez la documentation propre au module du moteur utilisé.
TIMEOUT
¶
Valeur par défaut : 300
Le nombre de secondes avant qu’une entrée de cache soit considérée comme obsolète. Si la valeur de ce réglage est None
, les contenus du cache n’expirent jamais. Une valeur de 0
provoque l’expiration immédiate des clés (effet équivalent à « ne pas mettre en cache »).
VERSION
¶
Valeur par défaut : 1
Le numéro de version par défaut des clés de cache générées par le serveur Django.
Consultez la documentation du cache pour plus d’informations.
CACHE_MIDDLEWARE_ALIAS
¶
Valeur par défaut : 'default'
La connexion de cache à utiliser pour l’intergiciel de cache.
CACHE_MIDDLEWARE_KEY_PREFIX
¶
Valeur par défaut : ''
(Chaîne vide)
Une chaîne qui servira de préfixe aux clés de cache générées par l’intergiciel de cache. Ce préfixe est combiné avec le réglage KEY_PREFIX
, il ne le remplace pas.
Voir Django’s cache framework.
CACHE_MIDDLEWARE_SECONDS
¶
Valeur par défaut : 600
Le nombre de secondes correspondant à la durée par défaut de mise en cache d’une page pour l’intergiciel de cache.
Voir Django’s cache framework.
CSRF_COOKIE_AGE
¶
Valeur par défaut : 31449600
(environ 1 année, en secondes)
L’âge des cookies CSRF, en secondes.
La raison de définir une période d’expiration à longue durée est d’éviter des problèmes au cas où un utilisateur ferme le navigateur ou place un signet sur une page, puis recharge cette page depuis le cache du navigateur. Sans cookies persistants, la soumission du formulaire échoue dans ces situations.
Certains navigateurs (spécifiquement Internet Explorer) peuvent prohiber l’utilisation de cookies persistants ou posséder un index de conteneur de cookies corrompu sur disque, ce qui fera échouer les contrôles de protection CSRF (et parfois de manière intermittente). Définissez ce réglage à None
pour utiliser des cookies CSRF basés sur la session, ce qui conserve les cookies en mémoire au lieu d’utiliser un stockage persistant.
CSRF_COOKIE_DOMAIN
¶
Valeur par défaut : None
Le domaine à utiliser lors de la définition du cookie CSRF. Cela peut être utile pour facilement exclure des requêtes inter-domaines de la protection habituelle contre les attaques inter-sites. Il devrait être défini à une chaîne telle que ".example.com"
pour autoriser une requête POST provenant d’un formulaire d’un sous-domaine à être acceptée par une vue servie sur un autre sous-domaine.
Notez que la présence de ce réglage n’implique pas que la protection CSRF de Django soit assurée par défaut contre des attaques inter-sous-domaines ; consultez la section sur les limites de CSRF.
CSRF_COOKIE_HTTPONLY
¶
Valeur par défaut : False
Indique si le drapeau HttpOnly
doit être utilisé sur le cookie CSRF. Si ce paramètre est défini à True
, le JavaScript côté client ne sera pas en mesure d’accéder au cookie CSRF.
Le fait de marquer le cookie CSRF comme HttpOnly
n’ajoute pas de protection réelle car le mécanisme CSRF ne sert qu’à protéger contre les attaques inter-domaines. Si un attaquant peut lire le cookie par JavaScript, il se trouve déjà sur le même domaine dans la perspective du navigateur, il est donc déjà en mesure de faire tout ce qu’il veut (la vulnérabilité XSS est bien plus grave que CSRF).
Même si ce réglage n’offre que peu de bénéfice réel, il est parfois requis par certains audits de sécurité.
Si vous activez ceci et que vous avez besoin d’envoyer la valeur du jeton CSRF à partir d’une requête AJAX, votre code JavaScript devra obtenir la valeur à partir d’un composant de formulaire caché contenant le jeton CSRF dans la page au lieu de l’obtenir par le cookie.
Voir SESSION_COOKIE_HTTPONLY
pour plus de détails sur HttpOnly
.
CSRF_COOKIE_MASKED
¶
Valeur par défaut : False
Indique s’il faut masquer le cookie CSRF. Voir les notes de publication pour des détails d’utilisation.
Obsolète depuis la version 4.1: Ce réglage transitoire est obsolète et sera supprimé dans Django 5.0.
CSRF_COOKIE_NAME
¶
Valeur par défaut :: 'csrftoken'
Le nom du cookie à utiliser pour le jeton d’authentification CSRF. Vous pouvez y mettre ce qui vous plaît (tant que c’est un nom de cookie différent de ceux qui existent déjà). Voir Protection contre le « Cross site request forgery » (CSRF).
CSRF_COOKIE_PATH
¶
Valeur par défaut : '/'
Le chemin défini dans le cookie CSRF. Cela devrait correspondre au chemin d’URL de votre installation Django ou être un parent de ce chemin.
C’est utile lorsque vous avez plusieurs instances Django fonctionnant sous le même nom d’hôte. Elles peuvent alors utiliser des chemins de cookie différents et chaque instance ne verra que ses propres cookies CSRF.
CSRF_COOKIE_SAMESITE
¶
Valeur par défaut : 'Lax'
La valeur de l’option SameSite du cookie CSRF. Cette option empêche le cookie d’être envoyé dans les requêtes inter-sites.
Voir SESSION_COOKIE_SAMESITE
pour plus de détails sur SameSite
.
CSRF_COOKIE_SECURE
¶
Valeur par défaut : False
Indique s’il est nécessaire d’utiliser un cookie sécurisé pour le cookie CSRF. Si défini à True
, le cookie sera marqué comme « sécurisé », ce qui signifie que les navigateurs sont chargés de vérifier que le cookie n’est envoyé que pour des connexions HTTPS.
CSRF_USE_SESSIONS
¶
Valeur par défaut : False
Indique s’il faut stocker le jeton CSRF dans la session de l’utilisateur plutôt que dans un cookie. Cela nécessite la présence de django.contrib.sessions
.
Le stockage du jeton CSRF dans un cookie (comportement par défaut de Django) est sûr, mais son stockage dans la session est une pratique courante dans d’autres cadriciels web et est donc parfois demandé par certains audits de sécurité.
Comme les vues d’erreur par défaut exigent le jeton CSRF, SessionMiddleware
doit apparaître dans MIDDLEWARE
avant tout intergiciel pouvant générer une exception déclenchant une vue d’erreur (comme par exemple PermissionDenied
) dans le cas où vous utilisez CSRF_USE_SESSIONS
. Voir Ordre des intergiciels.
CSRF_FAILURE_VIEW
¶
Valeur par défaut : 'django.views.csrf.csrf_failure'
Un chemin pointé vers la fonction Vue à utiliser lorsqu’une requête entrante est rejetée par la protection CSRF. La fonction doit avoir cette signature :
def csrf_failure(request, reason=""):
...
où reason
est un bref message (à l’intention des développeurs ou de la journalisation, par pour les utilisateurs finaux) indiquant la raison du rejet de la requête. Elle devrait renvoyer une réponse HttpResponseForbidden
.
django.views.csrf.csrf_failure()
accepte un paramètre supplémentaire template_name
qui vaut '403_csrf.html'
par défaut. Si un gabarit de ce nom existe, il sera utilisé pour produire la page.
CSRF_HEADER_NAME
¶
Valeur par défaut : 'HTTP_X_CSRFTOKEN'
Le nom de l’en-tête de requête utilisé pour l’authentification CSRF.
Comme avec d’autres en-têtes HTTP dans request.META
, le nom d’en-tête reçu du serveur est normalisé en convertissant tous les caractères en majuscules, remplaçant les tirets par des soulignements et en ajoutant un préfixe HTTP_
au nom. Par exemple, si un client envoie un en-tête 'X-XSRF-TOKEN'
, le réglage devrait être 'HTTP_X_XSRF_TOKEN'
.
CSRF_TRUSTED_ORIGINS
¶
Valeur par défaut : []
(liste vide)
Une liste d’origines de confiance pour les types de requêtes non sûres (par ex. POST
).
Pour les requêtes qui comprennent l’en-tête Origin
, la protection CSRF de Django exige que cet en-tête corresponde à l’origine présente dans l’en-tête Host
.
Pour une requête non sûre sécurisée
n’incluant pas l’en-tête Origin
, la requête doit posséder l’en-tête Referer
qui correspond à l’origine présente dans l’en-tête Host
.
Ces contrôles empêchent par exemple une requête POST
provenant de subdomain.example.com
d’aboutir sur le site api.example.com
. Si vous avez besoin de requêtes non sûres d’origine croisée, en continuant sur cet exemple, ajoutez 'https://subdomain.example.com'
à cette liste (ou avec http://...
si les requêtes proviennent d’une page non sécurisée).
Le réglage prend aussi en charge les sous-domaines, ce qui permet d’indiquer par exemple 'https://*.exemple.com'
pour autoriser l’accès à tous les sous-domaines de exemple.com
.
DATABASES
¶
Valeur par défaut : {}
(dictionnaire vide)
Un dictionnaire contenant les réglages de toutes les bases de données à utiliser avec Django. C’est un dictionnaire imbriqué dont les contenus font correspondre l’alias de base de données avec un dictionnaire contenant les options de chacune des bases de données.
Le réglage DATABASES
doit configurer une base de données default
; il est possible de définir autant de bases de données que nécessaire.
Le fichier de réglages le plus simple possible est destiné à une configuration à base de données unique utilisant le moteur SQLite. Cela peut être configuré de cette façon :
DATABASES = {
"default": {
"ENGINE": "django.db.backends.sqlite3",
"NAME": "mydatabase",
}
}
Lors de la connexion à d’autres moteurs de base de données, tels que MariaDB, MySQL, Oracle ou PostgreSQL, des paramètres de connexion supplémentaires sont requis. Voir le réglage ENGINE
ci-dessous sur la façon de spécifier d’autres types de bases de données. Cet exemple vaut pour PostgreSQL :
DATABASES = {
"default": {
"ENGINE": "django.db.backends.postgresql",
"NAME": "mydatabase",
"USER": "mydatabaseuser",
"PASSWORD": "mypassword",
"HOST": "127.0.0.1",
"PORT": "5432",
}
}
Les options internes suivantes, qui peuvent être nécessaires pour des configurations plus complexes, sont disponibles :
ATOMIC_REQUESTS
¶
Valeur par défaut : False
Définissez ce réglage à True
pour envelopper chaque vue dans une transaction sur cette base de données. Voir Tying transactions to HTTP requests.
AUTOCOMMIT
¶
Valeur par défaut : True
Définissez ce réglage à False
si vous souhaitez désactiver la gestion des transactions de Django et implémenter la vôtre.
ENGINE
¶
Valeur par défaut : ''
(Chaîne vide)
Le moteur de base de données à utiliser. Les moteurs de base de données intégrés à Django sont :
'django.db.backends.postgresql'
'django.db.backends.mysql'
'django.db.backends.sqlite3'
'django.db.backends.oracle'
Vous pouvez utiliser un moteur de base de données non livré avec Django en définissant ENGINE
à un chemin complètement qualifié d’une classe de moteur de base de données (par ex. monpaquet.moteurs.quelquechose
).
HOST
¶
Valeur par défaut : ''
(Chaîne vide)
L’hôte à utiliser lors de la connexion à la base de données. Une chaîne vide signifie localhost
. Non utilisé avec SQLite.
Si cette valeur commence par une barre oblique ('/'
) et que vous utilisez MySQL, MySQL se connectera par un connecteur Unix au connecteur indiqué. Par exemple :
"HOST": "/var/run/mysql"
Si vous utilisez MySQL et que cette valeur ne commence pas par une barre oblique, Django part du principe que la valeur est un hôte.
Si vous utilisez PostgreSQL, par défaut (HOST
vide), la connexion à la base de données se fait au travers de connecteurs Unix (lignes « local » dans pg_hba.conf
). Si votre connecteur de domaine UNIX n’est pas à l’emplacement standard, utilisez la même valeur unix_socket_directory
que celle de postgresql.conf
. Si vous préférez vous connecter via des connecteurs TCP, définissez HOST
à « localhost » ou « 127.0.0.1 » (lignes « host » dans pg_hba.conf
). Sous Windows, vous devez toujours définir HOST
, car les connecteurs de domaine Unix ne sont pas disponibles.
NAME
¶
Valeur par défaut : ''
(Chaîne vide)
Le nom de la base de données à utiliser. Pour SQLite, c’est le chemin complet vers le fichier de la base de données. Quand un chemin est indiqué, utilisez toujours des barres obliques vers l’avant, même sur Windows (par ex. C:/homes/user/mysite/sqlite3.db
).
CONN_MAX_AGE
¶
Valeur par défaut : 0
La durée de vie d’une connexion de base de données, en nombre entier de secondes. Utilisez 0
pour fermer les connexions de base de données à la fin de chaque requête – comportement historique de Django – et None
pour les connexions persistantes illimitées.
CONN_HEALTH_CHECKS
¶
Valeur par défaut : False
Si défini à True
, l’état des connexions persistantes aux bases de données sera contrôlé avant chaque réutilisation pour l’interrogation de la base de données. Si ce contrôle échoue, la connexion sera réétablie sans que la requête d’interrogation n’échoue dans le cas où la connexion n’est plus utilisable, mais que le serveur de base de données est prêt à accepter et servir de nouvelles connexions (par ex. après qu’un redémarrage de la base de données a fermé les connexions existantes).
OPTIONS
¶
Valeur par défaut : {}
(dictionnaire vide)
Des paramètres supplémentaires à utiliser lors de la connexion à la base de données. Les paramètres disponibles varient en fonction du moteur de base de données.
Certaines informations sur les paramètres disponibles peuvent être trouvées dans la documentation des moteurs de base de données. Pour plus d’informations, consultez la documentation propre au module du moteur utilisé.
PASSWORD
¶
Valeur par défaut : ''
(Chaîne vide)
Le mot de passe à utiliser lors de la connexion à la base de données. Non utilisé avec SQLite.
PORT
¶
Valeur par défaut : ''
(Chaîne vide)
Le port à utiliser lors de la connexion à la base de données. Une chaîne vide signifie le port par défaut. Non utilisé avec SQLite.
TIME_ZONE
¶
Valeur par défaut : None
Une chaîne représentant le fuseau horaire de cette connexion de base de données ou None
. Cette option interne au réglage DATABASES
accepte les mêmes valeurs que le réglage général TIME_ZONE
.
Lorsque USE_TZ
vaut True
et que cette option est définie, la lecture de dates/heures de la base de données renvoie des dates conscientes selon le fuseau horaire indiqué plutôt qu’en UTC. Lorsque USE_TZ
vaut False
, la définition de cette option est une erreur.
Si le moteur de base de données ne gère pas les fuseaux horaires (par ex. SQLite, MySQL, Oracle), Django lit et écrit les dates/heures en heure locale en fonction de cette option quand elle est définie et en UTC si elle ne l’est pas.
La modification du fuseau horaire de la connexion modifie la manière dont les dates/heures sont lues et écrites dans la base de données.
- Si Django gère la base de données et que vous n’avez pas de forte raison de faire autrement, vous devriez laisser cette option non définie. Il est préférable de stocker les dates/heures en UTC car cela évite des dates/heures ambiguës ou inexistantes dans les passages heure d’été/heure d’hiver. De plus, la manipulation de dates/heures en UTC présente une arithmétique simple, sans avoir besoin de considérer les modifications potentielles de décalages lors d’une transition d’heure d’été/hiver.
- Si vous vous connectez à une base de données externe qui stocke les dates/heures en temps locale plutôt qu’en UTC, vous devez définir cette option au fuseau horaire adéquat. De même, si Django gère la base de données mais que des systèmes externes se connectent à cette même base de données en espérant y trouver des dates/heures en temps local, vous devez définir cette option.
Si le moteur de base de données prend en charge les fuseaux horaires (par ex. PostgreSQL), l’option
TIME_ZONE
est très rarement nécessaire. Elle peut être modifiée à tout moment ; la base de données se charge de convertir les dates/heures au fuseau horaire désiré.La définition du fuseau horaire de la connexion de base de données peut se révéler utile pour exécuter des requêtes SQL brutes impliquant des fonctions dates/heures fournies par la base de données, telles que
date_trunc
, car leur résultat dépend du fuseau horaire.Cependant, le revers de la médaille est que l’obtention de toutes les dates/heures en temps local fait appel à une arithmétique plus compliquée, vous devez tenir compte de possibles modifications de décalages lors de transitions d’heure d’été/hiver.
Envisagez de convertir explicitement en temps local avec
AT TIME ZONE
dans les requêtes SQL brutes plutôt que de définir l’optionTIME_ZONE
.
DISABLE_SERVER_SIDE_CURSORS
¶
Valeur par défaut : False
Définissez ce réglage à True
si vous souhaitez désactiver l’utilisation de curseurs côté serveur avec QuerySet.iterator()
. Transactions groupées et curseurs côté serveur explique le cas d’utilisation.
Ce réglage est spécifique à PostgreSQL.
USER
¶
Valeur par défaut : ''
(Chaîne vide)
Le nom d’utilisateur à utiliser lors de la connexion à la base de données. Non utilisé avec SQLite.
TEST
¶
Valeur par défaut : {}
(dictionnaire vide)
Un dictionnaire de réglages pour les bases de données de test ; pour plus de détails sur la création et l’utilisation de bases de données de test, voir The test database.
Voici un exemple avec une configuration de base de données de test :
DATABASES = {
"default": {
"ENGINE": "django.db.backends.postgresql",
"USER": "mydatabaseuser",
"NAME": "mydatabase",
"TEST": {
"NAME": "mytestdatabase",
},
},
}
Les clés suivantes sont disponibles dans le dictionnaire TEST
:
CHARSET
¶
Valeur par défaut : None
Le codage de caractères utilisé pour créer la base de données de test. La valeur de cette chaîne est passée directement à la base de données, son format est donc dépendant du moteur.
Pris en charge par les moteurs PostgreSQL (postgresql
) et MySQL (mysql
).
COLLATION
¶
Valeur par défaut : None
L’ordre de collation à utiliser lors de la création de la base de données de test. Cette value est directement transmise au moteur, son format est donc spécifique au moteur.
Pris en charge uniquement pour le moteur mysql
(consultez le manuel de MySQL pour plus de détails).
DEPENDENCIES
¶
Valeur par défaut : ['default']
, pour toutes les bases de données, excepté default
qui n’a pas de dépendances.
Les dépendances d’ordre de création de la base de données. Consultez la documentation sur le contrôle de l’ordre de création des bases de données de test pour plus de détails.
MIGRATE
¶
Valeur par défaut : True
Si définie à False
, les migrations ne s’exécuteront pas lors de la création de la base de données de test. C’est équivalent à définir None
comme valeur dans MIGRATION_MODULES
, mais pour toutes les applications.
MIRROR
¶
Valeur par défaut : None
L’alias de base de données qui devra constituer le miroir de cette base de données durant les tests. Il y a dépendance des transactions, ce qui implique qu’il faut utiliser TransactionTestCase
au lieu de TestCase
.
Ce réglage existe pour permettre de tester des configurations primaire/réplique (aussi appelées maître-esclaves par certaines bases de données) de plusieurs bases de données. Consultez la documentation sur le test de configurations primaire/réplique pour plus de détails.
NAME
¶
Valeur par défaut : None
Le nom de la base de données à utiliser lors du fonctionnement de la suite de tests.
Si la valeur par défaut (None
) est utilisée avec le moteur de base de données SQLite, les tests utiliseront une base de données en mémoire vive. Pour tous les autres moteurs de base de données, la base de données de test sera nommée 'test_' + DATABASE_NAME
.
Voir The test database.
SERIALIZE
¶
Valeur booléenne permettant de contrôler si le lanceur de tests par défaut sérialise la base de données en une chaîne JSON en mémoire avant de lancer les tests (utilisé pour restaurer l’état de la base de données entre les tests s’il n’y a pas de transactions). Vous pouvez le définir à False
pour accélérer nettement le temps de création si aucune de vos classes de test ne comporte serialized_rollback=True.
Obsolète depuis la version 4.0: Ce réglage est obsolète car il peut être déduit de databases
avec l’option serialized_rollback activée.
TEMPLATE
¶
Ce réglage est spécifique à PostgreSQL.
Le nom d’un modèle (par ex. 'template0'
) à partir duquel la base de données de test est créée.
CREATE_DB
¶
Valeur par défaut : True
Ce paramètre est spécifique à Oracle.
S’il est défini à False
, l’espace de tables de test ne sera pas automatiquement créé au début des tests, ni supprimé à la fin.
CREATE_USER
¶
Valeur par défaut : True
Ce paramètre est spécifique à Oracle.
Si défini à False
, l’utilisateur test ne sera pas automatiquement créé au début des tests, ni supprimé à la fin.
USER
¶
Valeur par défaut : None
Ce paramètre est spécifique à Oracle.
Le nom d’utilisateur à utiliser lors de la connexion à la base de données Oracle durant les tests. Si non fourni, Django utilise 'test_' + USER
.
PASSWORD
¶
Valeur par défaut : None
Ce paramètre est spécifique à Oracle.
Le mot de passe à utiliser lors de la connexion à la base de données Oracle durant les tests. Si non fourni, Django génère un mot de passe aléatoire.
ORACLE_MANAGED_FILES
¶
Valeur par défaut : False
Ce paramètre est spécifique à Oracle.
Si défini à True
, des espaces de tables Oracle Managed Files (OMF) sont utilisées. DATAFILE
et DATAFILE_TMP
seront ignorés.
TBLSPACE
¶
Valeur par défaut : None
Ce paramètre est spécifique à Oracle.
Le nom de l’espace de tables utilisé lors des tests. Si non fourni, Django utilise 'test_' + USER
.
TBLSPACE_TMP
¶
Valeur par défaut : None
Ce paramètre est spécifique à Oracle.
Le nom de l’espace de tables temporaire utilisé lors des tests. Si non fourni, Django utilise 'test_' + USER + '_temp'
.
DATAFILE
¶
Valeur par défaut : None
Ce paramètre est spécifique à Oracle.
Le nom du fichier de données à utiliser pour TBLSPACE. Si non fourni, Django utilise TBLSPACE + '.dbf'
.
DATAFILE_TMP
¶
Valeur par défaut : None
Ce paramètre est spécifique à Oracle.
Le nom du fichier de données à utiliser pour TBLSPACE_TMP. Si non fourni, Django utilise TBLSPACE_TMP + '.dbf'
.
DATAFILE_MAXSIZE
¶
Valeur par défaut : '500M'
Ce paramètre est spécifique à Oracle.
La taille maximale que DATAFILE est autorisé à atteindre.
DATAFILE_TMP_MAXSIZE
¶
Valeur par défaut : '500M'
Ce paramètre est spécifique à Oracle.
La taille maximale que DATAFILE_TMP est autorisé à atteindre.
DATAFILE_SIZE
¶
Valeur par défaut : '50M'
Ce paramètre est spécifique à Oracle.
La taille initiale du fichier DATAFILE.
DATAFILE_TMP_SIZE
¶
Valeur par défaut : '50M'
Ce paramètre est spécifique à Oracle.
La taille initiale du fichier DATAFILE_TMP.
DATAFILE_EXTSIZE
¶
Valeur par défaut : '25M'
Ce paramètre est spécifique à Oracle.
La taille d’extension du fichier DATAFILE lorsque plus d’espace est nécessaire.
DATAFILE_TMP_EXTSIZE
¶
Valeur par défaut : '25M'
Ce paramètre est spécifique à Oracle.
La taille d’extension du fichier DATAFILE_TMP lorsque plus d’espace est nécessaire.
DATA_UPLOAD_MAX_MEMORY_SIZE
¶
Valeur par défaut : 2621440
(c-à-d. 2.5 Mio).
La taille maximale en octets d’un corps de requête avant qu’il ne provoque une exception SuspiciousOperation
(RequestDataTooBig
). Le contrôle est effectué lors de l’accès à request.body
ou à request.POST
et est calculé par rapport à la taille totale de la requête sans les données d’envoi de fichiers (uploads). Vous pouvez le définir à None
pour désactiver le contrôle. Les applications susceptibles de recevoir des envois de formulaires inhabituellement volumineux devraient ajuster ce réglage.
La quantité de données de requête est corrélée à la quantité de mémoire nécessaire pour traiter la requête et remplir les dictionnaires GET et POST. Les grosses requêtes pourraient être utilisées comme vecteur d’attaque par déni de service si elles n’étaient pas contrôlées. Comme les serveurs web n’effectuent en principe pas d’inspection approfondie des requêtes, il n’est pas possible de procéder à ce genre de contrôle à leur niveau.
Voir aussi FILE_UPLOAD_MAX_MEMORY_SIZE
.
DATA_UPLOAD_MAX_NUMBER_FIELDS
¶
Valeur par défaut : 1000
Le nombre maximum de paramètres pouvant être reçus via GET ou POST avant qu’une exception SuspiciousOperation
(TooManyFields
) soit générée. Vous pouvez le définir à None
pour désactiver le contrôle. Les applications susceptibles de recevoir un nombre inhabituellement grand de champs de formulaire devraient ajuster ce réglage.
Le nombre de paramètres de requête est corrélé à la quantité de temps nécessaire pour traiter la requête et remplir les dictionnaires GET et POST. Les grosses requêtes pourraient être utilisées comme vecteur d’attaque par déni de service si elles n’étaient pas contrôlées. Comme les serveurs web n’effectuent en principe pas d’inspection approfondie des requêtes, il n’est pas possible de procéder à ce genre de contrôle à leur niveau.
DATA_UPLOAD_MAX_NUMBER_FILES
¶
Valeur par défaut : 100
Le nombre maximum de fichiers pouvant être reçus via POST dans une requête codée en multipart/form-data
avant qu’une exception SuspiciousOperation
(TooManyFiles
) soit générée. Vous pouvez le définir à None
pour désactiver le contrôle. Les applications susceptibles de recevoir un nombre inhabituellement grand de champs fichiers devraient ajuster ce réglage.
Le nombre de fichiers acceptés est corrélé à la quantité de temps et de mémoire nécessaire pour traiter la requête. Les grosses requêtes pourraient être utilisées comme vecteur d’attaque par déni de service si elles n’étaient pas contrôlées. Comme les serveurs web n’effectuent en principe pas d’inspection approfondie des requêtes, il n’est pas possible de procéder à ce genre de contrôle à leur niveau.
DATABASE_ROUTERS
¶
Valeur par défaut : []
(liste vide)
La liste des routeurs utilisés pour déterminer à quelle base de données il faut accéder lors de l’exécution d’une requête de base de données.
Consultez la documentation sur le routage automatique des bases de données dans des configurations à plusieurs bases.
DATE_FORMAT
¶
Valeur par défaut : 'N j, Y'
(ex . : Feb. 4, 2003
)
Le format par défaut pour l’affichage des champs dates dans les différentes parties du système. Notez que si USE_L10N
est défini à True
, le format piloté par la locale a une priorité plus élevée et remplacera ce format. Voir les chaînes de format de date autorisées
.
Voir aussi DATETIME_FORMAT
, TIME_FORMAT
et SHORT_DATE_FORMAT
.
DATE_INPUT_FORMATS
¶
Valeur par défaut :
[
"%Y-%m-%d", # '2006-10-25'
"%m/%d/%Y", # '10/25/2006'
"%m/%d/%y", # '10/25/06'
"%b %d %Y", # 'Oct 25 2006'
"%b %d, %Y", # 'Oct 25, 2006'
"%d %b %Y", # '25 Oct 2006'
"%d %b, %Y", # '25 Oct, 2006'
"%B %d %Y", # 'October 25 2006'
"%B %d, %Y", # 'October 25, 2006'
"%d %B %Y", # '25 October 2006'
"%d %B, %Y", # '25 October, 2006'
]
Une liste de formats qui seront acceptés lors de la saisie de données dans un champ date. Les formats seront testés dans l’ordre et le premier correspondant sera utilisé. Notez que ces chaînes de format utilisent la syntaxe du module datetime de Python, et non pas celle des chaînes de format du filtre de gabarit date
.
Lorsque USE_L10N
vaut True
, le format piloté par la locale a une priorité plus élevée et remplace ce format.
Voir aussi DATETIME_INPUT_FORMATS
et TIME_INPUT_FORMATS
.
DATETIME_FORMAT
¶
Valeur par défaut : 'N j, Y, P'
(ex. Feb. 4, 2003, 4 p.m.
)
Le format par défaut pour l’affichage des champs dates/heures dans les différentes parties du système. Notez que si USE_L10N
est défini à True
, le format piloté par la locale a une priorité plus élevée et remplacera ce format. Voir les chaînes de format de date autorisées
.
Voir aussi DATE_FORMAT
, TIME_FORMAT
et SHORT_DATETIME_FORMAT
.
DATETIME_INPUT_FORMATS
¶
Valeur par défaut :
[
"%Y-%m-%d %H:%M:%S", # '2006-10-25 14:30:59'
"%Y-%m-%d %H:%M:%S.%f", # '2006-10-25 14:30:59.000200'
"%Y-%m-%d %H:%M", # '2006-10-25 14:30'
"%m/%d/%Y %H:%M:%S", # '10/25/2006 14:30:59'
"%m/%d/%Y %H:%M:%S.%f", # '10/25/2006 14:30:59.000200'
"%m/%d/%Y %H:%M", # '10/25/2006 14:30'
"%m/%d/%y %H:%M:%S", # '10/25/06 14:30:59'
"%m/%d/%y %H:%M:%S.%f", # '10/25/06 14:30:59.000200'
"%m/%d/%y %H:%M", # '10/25/06 14:30'
]
Une liste de formats qui seront acceptés lors de la saisie de données dans un champ date/heure. Les formats seront testés dans l’ordre et le premier correspondant sera utilisé. Notez que ces chaînes de format utilisent la syntaxe du module datetime de Python, et non pas celle des chaînes de format du filtre de gabarit date
. Les formats contenant uniquement la date ne sont pas inclus car les champs date/heure essaient automatiquement les formats DATE_INPUT_FORMATS
en dernier recours.
Lorsque USE_L10N
vaut True
, le format piloté par la locale a une priorité plus élevée et remplace ce format.
Voir aussi DATE_INPUT_FORMATS
et TIME_INPUT_FORMATS
.
DEBUG
¶
Valeur par défaut : False
Une valeur booléenne qui active ou désactive le mode de débogage.
Ne déployez jamais de site en production avec le réglage DEBUG
activé.
L’une des fonctionnalités principales du mode de débogage est l’affichage de pages d’erreur détaillées. Si votre application lève une exception quand DEBUG
vaut True
, Django affiche une trace détaillée, y compris de nombreuses métadonnées au sujet de votre environnement, comme par exemple la liste complète des réglages Django en vigueur (tirés de settings.py
).
Comme mesure de sécurité, Django n’affiche pas les réglages pouvant comporter des données sensibles, comme SECRET_KEY
. Plus précisément, il exclut tout réglage dont le nom contient l’un des éléments suivants :
'API'
'KEY'
'PASS'
'SECRET'
'SIGNATURE'
'TOKEN'
Notez qu’il s’agit de correspondances partielles. 'PASS'
va aussi intercepter PASSWORD, comme 'TOKEN'
interceptera TOKENIZED et ainsi de suite.
Toutefois, notez qu’il y aura toujours des parties de l’affichage de débogage qui contiennent des éléments inappropriés pour le tout public. Des chemins de fichiers, des options de configuration et d’autres choses semblables peuvent tous donner à des attaquants des informations supplémentaires au sujet de votre serveur.
Il est aussi important de se rappeler que lorsque un site fonctionne en mode DEBUG
, Django mémorise chaque requête SQL qu’il exécute. C’est utile lors de séances de débogage, mais cela va assez rapidement consommer beaucoup de mémoire sur un serveur de production.
Enfin, si DEBUG
vaut False
, vous devez également définir correctement le réglage ALLOWED_HOSTS
. Sans cela, toutes les requêtes renverront l’erreur « Bad Request (400) ».
Note
Le fichier settings.py
créé par défaut par django-admin startproject
définit DEBUG = True
par commodité.
DEBUG_PROPAGATE_EXCEPTIONS
¶
Valeur par défaut : False
Si défini à True
, le traitement des exceptions par Django des fonctions de vue (handler500
ou la vue de débogage si DEBUG
vaut True
) ainsi que la journalisation des réponses 500 (django.request) sont omis et les exceptions sont propagées vers le haut.
Cela peut être utile dans certaines configurations de test. Ce ne devrait pas être utilisé pour un site en production sauf dans le cas où vous aimeriez que le serveur web génère lui-même les réponses « Internal Server Error » à la place de Django. Dans ce cas, veillez à ce que le serveur n’affiche pas la trace de débogage ou d’autres informations sensibles dans la réponse.
DECIMAL_SEPARATOR
¶
Valeur par défaut : '.'
(point)
Séparateur décimal par défaut utilisé lors du formatage des nombres à virgule.
Notez que lorsque USE_L10N
vaut True
, le format piloté par la locale a une priorité plus élevée et remplace ce séparateur.
Voir aussi NUMBER_GROUPING
, THOUSAND_SEPARATOR
et USE_THOUSAND_SEPARATOR
.
DEFAULT_AUTO_FIELD
¶
Valeur par défaut : '
django.db.models.AutoField
'
Type de champ clé primaire à utiliser par défaut pour les modèles n’ayant pas de champ avec primary_key=True
.
DEFAULT_CHARSET
¶
Valeur par défaut : 'utf-8'
Codage de caractères par défaut utilisé pour tous les objets HttpResponse
si un type MIME n’est pas manuellement indiqué. Utilisé pour construire l’en-tête Content-Type
.
DEFAULT_EXCEPTION_REPORTER
¶
Valeur par défaut : '
django.views.debug.ExceptionReporter
'
Classe de rapports d’exception utilisée par défaut si aucune n’a été attribuée à l’instance HttpRequest
. Voir Rapports d’erreur personnalisés.
DEFAULT_EXCEPTION_REPORTER_FILTER
¶
Valeur par défaut : '
django.views.debug.SafeExceptionReporterFilter
'
Classe de filtre de rapports d’exception utilisée par défaut si aucune n’a été attribuée à l’instance HttpRequest
. Voir Filtrage des rapports d’erreur.
DEFAULT_FILE_STORAGE
¶
Valeur par défaut : '
django.core.files.storage.FileSystemStorage
'
Classe de stockage de fichiers utilisée par défaut pour toute opération liée à des fichiers quand un système de stockage n’est pas explicitement indiqué. Voir Managing files.
Obsolète depuis la version 4.2: Ce réglage est obsolète. À partir de Django 4.2, le moteur de stockage de fichiers par défaut peut être configuré par le réglage STORAGES
avec la clé default
.
DEFAULT_FROM_EMAIL
¶
Valeur par défaut : 'webmaster@localhost'
L’adresse de courriel par défaut à utiliser pour diverses correspondance automatisées de la part des gestionnaires du site. Cela n’inclut pas les messages d’erreur envoyés à ADMINS
et MANAGERS
; pour cela, voir SERVER_EMAIL
.
DEFAULT_INDEX_TABLESPACE
¶
Valeur par défaut : ''
(Chaîne vide)
Espace de tables utilisé par défaut pour les index sur les champs qui n’en indiquent pas, si le moteur les prend en charge (voir Tablespaces).
DEFAULT_TABLESPACE
¶
Valeur par défaut : ''
(Chaîne vide)
Espace de tables utilisé par défaut pour les modèles qui n’en indiquent pas, si le moteur les prend en charge (voir Tablespaces).
DISALLOWED_USER_AGENTS
¶
Valeur par défaut : []
(liste vide)
Liste d’objets d’expressions régulières compilées représentant des chaînes d’agent utilisateur (User-Agent) qui ne sont globalement pas autorisés à visiter le site. Utile pour les robots ou les collecteurs malveillants. Ce réglage n’est utilisé que si CommonMiddleware
est installé (voir Middleware).
EMAIL_BACKEND
¶
Valeur par défaut : '
django.core.mail.backends.smtp.EmailBackend
'
Le moteur à utiliser pour envoyer des courriels. Consultez Sending email pour obtenir la liste des moteurs disponibles.
EMAIL_FILE_PATH
¶
Valeur par défaut : non définie
Le répertoire utilisé par le moteur de messagerie file pour stocker les fichiers qu’il produit.
EMAIL_HOST
¶
Valeur par défaut : 'localhost'
L’hôte à utiliser pour envoyer des courriels.
Voir aussi EMAIL_PORT
.
EMAIL_HOST_PASSWORD
¶
Valeur par défaut : ''
(Chaîne vide)
Mot de passe à utiliser pour le serveur SMTP défini dans EMAIL_HOST
. Ce réglage est utilisé conjointement avec EMAIL_HOST_USER
lors de l’authentification au serveur SMTP. Si l’un de ces réglages est vide, Django ne tente pas de s’authentifier.
Voir aussi EMAIL_HOST_USER
.
EMAIL_HOST_USER
¶
Valeur par défaut : ''
(Chaîne vide)
Nom d’utilisateur à utiliser pour le serveur SMTP défini dans EMAIL_HOST
. S’il est vide, Django ne tente pas de s’authentifier.
Voir aussi EMAIL_HOST_PASSWORD
.
EMAIL_SUBJECT_PREFIX
¶
Valeur par défaut : '[Django] '
Préfixe de la ligne du sujet dans les messages électroniques envoyés avec django.core.mail.mail_admins
ou django.core.mail.mail_managers
. Une espace finale est probablement adéquate.
EMAIL_USE_LOCALTIME
¶
Valeur par défaut : False
Indique s’il faut définir l’en-tête SMTP Date
des courriels envoyés dans le fuseau horaire local (True
) ou en UTC (False
).
EMAIL_USE_TLS
¶
Valeur par défaut : False
Indique si une connexion TLS (sécurisée) doit être utilisée pour le dialogue avec le serveur SMTP. Ceci s’applique aux connexions TLS explicites, généralement sur le port 587. Si vous obtenez des connexions qui se bloquent, consultez le réglage TLS implicite EMAIL_USE_SSL
.
EMAIL_USE_SSL
¶
Valeur par défaut : False
Indique si une connexion TLS implicite (sécurisée) doit être utilisée pour le dialogue avec le serveur SMTP. Dans la plupart de documentations de messagerie électronique, ce type de connexion TLS s’appelle SSL. C’est généralement le port 465 qui est utilisé. Si vous rencontrez des problèmes, consultez le réglage TLS explicite EMAIL_USE_TLS
.
Notez que EMAIL_USE_TLS
/EMAIL_USE_SSL
sont mutuellement exclusifs, un seul d’entre eux peut donc être défini à True
.
EMAIL_SSL_CERTFILE
¶
Valeur par défaut : None
Si EMAIL_USE_SSL
ou EMAIL_USE_TLS
valent True
, vous pouvez définir de manière facultative le chemin vers un fichier de chaîne de certificat de type PEM à utiliser pour la connexion SSL.
EMAIL_SSL_KEYFILE
¶
Valeur par défaut : None
Si EMAIL_USE_SSL
ou EMAIL_USE_TLS
valent True
, vous pouvez définir de manière facultative le chemin vers un fichier de clé privée de type PEM à utiliser pour la connexion SSL.
Notez que la définition de EMAIL_SSL_CERTFILE
et de EMAIL_SSL_KEYFILE
n’amène à aucune vérification de certificat. Ces valeurs sont transmises à la connexion SSL sous-jacente. Veuillez vous référer à la documentation de la fonction ssl.SSLContext.wrap_socket()
de Python pour des détails sur la façon dont les fichiers de chaîne de certificat et de clé privée sont traités.
EMAIL_TIMEOUT
¶
Valeur par défaut : None
Définit un délai d’expiration en secondes pour des opérations bloquantes telles que la tentative de connexion.
FILE_UPLOAD_HANDLERS
¶
Valeur par défaut :
[
"django.core.files.uploadhandler.MemoryFileUploadHandler",
"django.core.files.uploadhandler.TemporaryFileUploadHandler",
]
Une liste de gestionnaires à utiliser pour le téléversement de fichiers. Ce réglage permet de personnaliser complètement (même remplacer) le processus de gestion des téléversements par Django.
Voir Managing files pour plus de détails.
FILE_UPLOAD_MAX_MEMORY_SIZE
¶
Valeur par défaut : 2621440
(c-à-d. 2.5 Mio).
La taille maximale (en octets) d’un téléversement avant qu’il ne soit déporté sur le système de fichiers. Voir Managing files pour plus de détails.
Voir aussi DATA_UPLOAD_MAX_MEMORY_SIZE
.
FILE_UPLOAD_DIRECTORY_PERMISSIONS
¶
Valeur par défaut : None
Le mode numérique à appliquer aux répertoires créés durant le processus de téléversement de fichiers.
Ce réglage détermine également les permissions par défaut pour les répertoires de recueil des fichiers statiques lors de l’utilisation de la commande d’administration collectstatic
. Voir collectstatic
pour des détails sur la façon de le redéfinir.
Cette valeur reflète la fonctionnalité et les restrictions du réglage FILE_UPLOAD_PERMISSIONS
.
FILE_UPLOAD_PERMISSIONS
¶
Valeur par défaut : 0o644
Le mode numérique (ex : 0o644
) des permissions pour les nouveaux fichiers téléversés. Pour plus d’informations sur la signification des ces modes, consultez la documentation de os.chmod()
.
Si ce réglage vaut None
, vous obtiendrez un comportement dépendant du système d’exploitation. Sur la plupart des plates-formes, les fichiers temporaires obtiennent un mode 0o600
et les fichiers enregistrés à partir de la mémoire sont enregistrés avec le masque « umask » standard du système.
Pour des raisons de sécurité, ces permissions ne sont pas appliquées aux fichiers temporaires qui sont stockés dans FILE_UPLOAD_TEMP_DIR
.
Ce réglage détermine également les permissions par défaut pour les fichiers statiques recueillis par la commande d’administration collectstatic
. Voir collectstatic
pour des détails sur la façon de le redéfinir.
Avertissement
Toujours précéder le mode d’un 0o
.
Si vous n’êtes pas à l’aise avec les modes de fichiers, sachez que le préfixe 0o
est très important : il indique un nombre octal, ce qui est la bonne manière d’indiquer les modes. Si vous essayez d’utiliser 644
, vous obtiendrez un comportement totalement incorrect.
FILE_UPLOAD_TEMP_DIR
¶
Valeur par défaut : None
Le répertoire dans lequel stocker temporairement les données (typiquement pour les fichiers plus grands que FILE_UPLOAD_MAX_MEMORY_SIZE
) lors des téléversements de fichiers. Avec la valeur None
, Django utilise le répertoire temporaire standard du système d’exploitation. Par exemple, il s’agit de /tmp
sur les systèmes d’exploitation de type Unix.
Voir Managing files pour plus de détails.
FIRST_DAY_OF_WEEK
¶
Valeur par défaut : 0
(dimanche)
Un nombre représentant le premier jour de la semaine. C’est particulièrement utile lors de l’affichage d’un calendrier. Cette valeur n’est utilisée que si les formats internationaux ne sont pas en vigueur ou si un format n’est pas trouvé pour la langue actuelle.
La valeur est un entier de 0 à 6, où 0 signifie dimanche, 1 signifie lundi, etc.
FIXTURE_DIRS
¶
Valeur par défaut : []
(liste vide)
Liste de répertoires dans lesquels des fichiers d’instantanés sont recherchés, en plus du répertoire fixtures
de chaque application, dans l’ordre de recherche.
Notez que ces chemins doivent utiliser les barres obliques de style Unix, même avec Windows.
Voir Ajout de données par des instantanés et Fixture loading.
FORCE_SCRIPT_NAME
¶
Valeur par défaut : None
Si différent de None
, ce réglage est utilisé comme valeur de la variable d’environnement SCRIPT_NAME
dans toute requête HTTP. Il peut être utilisé pour surcharger la valeur de SCRIPT_NAME
fournie par le serveur, qui peut être une version réécrite de la valeur préférée ou carrément absente. Il est aussi utilisé par django.setup()
pour définir le préfixe de script du résolveur d’URL en dehors du cycle requête/réponse (par ex. dans les commandes d’administration et les scripts autonomes) pour générer des URL correctes lorsque SCRIPT_NAME
est différent de /
.
FORM_RENDERER
¶
Valeur par défaut : '
django.forms.renderers.DjangoTemplates
'
La classe qui produit les formulaires et composants de formulaires HTML. Elle doit implémenter l’API de rendu de bas niveau. Les producteurs de formulaires inclus sont :
FORMAT_MODULE_PATH
¶
Valeur par défaut : None
Un chemin Python complet vers un paquet Python contenant des définitions de formats personnalisées pour les locales du projet. Si différent de None
, Django cherche un fichier formats.py
dans le répertoire dont le nom correspond à la locale en cours et utilise les formats définis dans ce fichier.
Par exemple, si FORMAT_MODULE_PATH
est défini à mysite.formats
et que la langue actuelle est en
(anglais), Django s’attend à une arborescence de répertoires comme celle-ci :
mysite/
formats/
__init__.py
en/
__init__.py
formats.py
Vous pouvez aussi définir ce réglage à une liste de chemins Python, par exemple :
FORMAT_MODULE_PATH = [
"mysite.formats",
"some_app.formats",
]
Lorsque Django recherche un certain format, il va parcourir tous les chemins Python indiqués jusqu’à ce qu’il trouve un module qui définit réellement le format recherché. Cela signifie que les formats définis dans les premiers paquets de la liste ont la priorité sur les formats des paquets suivants.
Les formats disponibles sont :
IGNORABLE_404_URLS
¶
Valeur par défaut : []
(liste vide)
Liste d’objets expressions régulières compilées décrivant les URL qui doivent être ignorées lors du signalement des erreurs HTTP 404 par courriel (voir Gestion du signalement des erreurs). Les expressions régulières sont comparées aux chemins complets des requêtes
(y compris la chaîne de requête, le cas échéant). Ceci est utile si votre site ne fournit pas certains fichiers fréquemment demandés comme favicon.ico
ou robots.txt
.
Ce n’est utilisé que si BrokenLinkEmailsMiddleware
est activé (voir Middleware).
INSTALLED_APPS
¶
Valeur par défaut : []
(liste vide)
Une liste de chaînes désignant toutes les applications activées dans cette installation de Django. Chaque chaîne doit correspondre à un chemin pointé Python vers :
- une classe de configuration d’application (de préférence), ou
- un paquet contenant une application.
En savoir plus sur les configurations d’applications.
Utilisez le registre des applications pour l’introspection
Votre code ne devrait jamais accéder directement à INSTALLED_APPS
. Utilisez plutôt django.apps.apps
.
Les noms et les étiquettes d’application doivent être uniques dans INSTALLED_APPS
Les noms
d’applications, le chemin pointé Python vers le paquet de l’application, doivent être uniques. Il n’existe aucune manière d’inclure deux fois la même application, sauf en dupliquant son code sous un autre nom.
Les étiquettes
d’application, par défaut la partie finale du nom, doivent aussi être uniques. Par exemple, il n’est pas possible d’inclure à la fois django.contrib.auth
et monprojet.auth
. Cependant, vous pouvez renommer l’étiquette d’une application avec une configuration personnalisée définissant un attribut label
différent.
Ces règles s’appliquent dans tous les cas, quelle que soit la cible des références dans INSTALLED_APPS
, des classes de configuration d’application ou des paquets d’application.
Lorsque plusieurs applications fournissent différentes versions de la même ressource (gabarit, fichier statique, commande d’administration, traduction), l’application apparaissant en premier dans INSTALLED_APPS
a la priorité.
INTERNAL_IPS
¶
Valeur par défaut : []
(liste vide)
Une liste d’adresses IP, sous forme de chaînes, dont les requêtes :
- Permettent au processeur de contexte
debug()
d’ajouter quelques variables au contexte du gabarit. - Peuvent utiliser les signets dynamiques de admindocs même si l’utilisateur n’est pas connecté en tant qu’administrateur (staff).
- Sont marquées comme « internes » (et non pas « EXTERNAL ») dans les courriels envoyés par
AdminEmailHandler
.
LANGUAGE_CODE
¶
Valeur par défaut : 'en-us'
Une chaîne représentant le code de langue de cette installation. Elle doit respecter le format de langue standard. Par exemple, l’anglais américain est "en-us"
. Voir aussi la liste des identifiants de langue et Internationalization and localization.
USE_I18N
doit être activé pour que ce réglage ait un effet.
Ce réglage sert à deux fins :
- Si l’intergiciel de localisation n’est pas actif, il décide quelle traduction est utilisée pour tous les utilisateurs.
- Si l’intergiciel de localisation est actif, il fournit une langue par défaut dans le cas où la langue préférée de l’utilisateur ne peut être déterminée ou n’est pas prise en charge par le site web. Il fournit également la traduction par défaut lorsqu’une traduction d’une chaîne donnée n’existe pas dans la langue préférée de l’utilisateur.
Voir How Django discovers language preference pour plus de détails.
LANGUAGE_COOKIE_AGE
¶
Valeur par défaut : None
(expiration à la fermeture du navigateur)
L’âge du cookie de langue, en secondes.
LANGUAGE_COOKIE_DOMAIN
¶
Valeur par défaut : None
Le domaine à utiliser pour le cookie de langue. Définissez ce réglage à une chaîne, comme "example.com"
pour un cookie inter-domaine, ou utilisez None
pour un cookie de domaine standard.
Soyez prudent lors de la mise à jour de ce réglage sur un site de production. Si vous mettez à jour ce paramètre pour activer les cookies inter-domaines sur un site qui utilisait précédemment les cookies de domaine standards, les cookies existants des utilisateurs qui contiennent l’ancien domaine ne seront pas mis à jour. Il en résultera qu’ils seront incapables de changer de langue aussi longtemps que ces cookies persistent. La seule façon sûre et fiable d’effectuer ce changement est de modifier de manière permanente le cookie de langue (via le réglage LANGUAGE_COOKIE_NAME
) et d’ajouter un intergiciel qui copie la valeur de l’ancien cookie vers le nouveau, puis supprime l’ancien.
LANGUAGE_COOKIE_HTTPONLY
¶
Valeur par défaut : False
Indique si le drapeau HttpOnly
doit être utilisé sur le cookie de langue. Si ce paramètre est défini à True
, le JavaScript côté client ne sera pas en mesure d’accéder au cookie de langue.
Voir SESSION_COOKIE_HTTPONLY
pour plus de détails sur HttpOnly
.
LANGUAGE_COOKIE_NAME
¶
Valeur par défaut : 'django_language'
Le nom à utiliser pour le cookie de langue. Vous pouvez mettre ce que vous voulez (tant que c’est un nom de cookie différent de ceux qui existent déjà). Voir Internationalization and localization.
LANGUAGE_COOKIE_PATH
¶
Valeur par défaut : '/'
Le chemin défini dans le cookie de langue. Cela devrait correspondre au chemin d’URL de votre installation Django ou être un parent de ce chemin.
C’est utile lorsque vous avez plusieurs instances Django fonctionnant sous le même nom d’hôte. Elles peuvent alors utiliser des chemins de cookie différents et chaque instance ne verra que ses propres cookies de langue.
Soyez prudent lors de la mise à jour de ce réglage sur un site de production. Si vous mettez à jour ce réglage afin d’utiliser un chemin plus profond que précédemment, les cookies existants des utilisateurs qui contiennent l’ancien chemin ne seront pas mis à jour. Il en résultera qu’ils seront incapables de changer de langue aussi longtemps que ces cookies persistent. La seule façon sûre et fiable d’effectuer ce changement est de modifier de manière permanente le cookie de langue (via le réglage LANGUAGE_COOKIE_NAME
) et d’ajouter un intergiciel qui copie la valeur de l’ancien cookie vers le nouveau, puis supprime l’ancien.
LANGUAGE_COOKIE_SAMESITE
¶
Valeur par défaut : None
La valeur de l’option SameSite du cookie de langue. Cette option empêche le cookie d’être envoyé dans les requêtes inter-sites.
Voir SESSION_COOKIE_SAMESITE
pour plus de détails sur SameSite
.
LANGUAGE_COOKIE_SECURE
¶
Valeur par défaut : False
Indique s’il est nécessaire d’utiliser un cookie sécurisé pour le cookie de langue. Si défini à True
, le cookie sera marqué comme « sécurisé », ce qui signifie que les navigateurs sont chargés de vérifier que le cookie n’est envoyé que pour des connexions HTTPS.
LANGUAGES
¶
Valeur par défaut : une liste des langues disponibles. Cette liste augmentant continuellement, nous évitons de la reproduire ici, car elle deviendrait vite obsolète. Vous pouvez consultez la liste des langues disposant d’une traduction en examinant le fichier django/conf/global_settings.py.
La liste est formée de listes binaires dans le format (code de langue, nom_de_langue
), par exemple ('ja', 'Japanese')
. Cette liste définit les langues disponibles dans la sélection de langues. Voir Internationalization and localization.
Généralement, la valeur par défaut convient bien. Ne définissez ce réglage que si vous souhaitez restreindre la sélection de langues à un sous-ensemble des langues fournies par Django.
Si vous personnalisez le réglage LANGUAGES
, vous pouvez marquer les noms des langues en tant que chaînes à traduire en utilisant la fonction gettext_lazy()
.
Voici un exemple de fichier de réglages :
from django.utils.translation import gettext_lazy as _
LANGUAGES = [
("de", _("German")),
("en", _("English")),
]
LANGUAGES_BIDI
¶
Valeur par défaut : une liste de codes de langues qui s’écrivent de droite à gauche. Vous pouvez consultez la liste de ces langues en examinant le fichier django/conf/global_settings.py.
La liste contient des codes de langue pour les langues qui s’écrivent de droite à gauche.
Généralement, la valeur par défaut convient bien. Ne définissez ce réglage que si vous souhaitez restreindre la sélection de langues à un sous-ensemble des langues fournies par Django. Si vous définissez un réglage LANGUAGES
personnalisé, la liste des langues bidirectionnelles peut contenir des codes de langue non activés pour un site particulier.
LOCALE_PATHS
¶
Valeur par défaut : []
(liste vide)
Une liste de répertoires dans lesquels Django cherche les fichiers de traduction. Voir How Django discovers translations.
Exemple :
LOCALE_PATHS = [
"/home/www/project/common_files/locale",
"/var/local/translations/locale",
]
Django cherche dans chacun de ces chemins des répertoires <code_locale>/LC_MESSAGES
contenant eux-mêmes les fichiers de traduction réels.
LOGGING
¶
Valeur par défaut : un dictionnaire de configuration de la journalisation.
Une structure de données contenant les informations de configuration. Lorsqu’il n’est pas vide, le contenu de cette structure de données est transmis comme paramètre à la méthode de configuration indiquée par LOGGING_CONFIG
.
Entre autres choses, la configuration par défaut de la journalisation transmet les erreurs de serveur HTTP 500 à un gestionnaire de journal de type courriel lorsque DEBUG
vaut False
. Voir aussi Configuring logging.
Vous pouvez voir la configuration par défaut de journalisation en regardant dans django/utils/log.py.
LOGGING_CONFIG
¶
Valeur par défaut : 'logging.config.dictConfig'
Un chemin vers un exécutable qui sera utilisé pour configurer la journalisation du projet Django. Par défaut, il contient une instance de la méthode de configuration dictConfig de Python.
Si vous définissez LOGGING_CONFIG
à None
, le processus de configuration de la journalisation sera court-circuité.
MANAGERS
¶
Valeur par défaut : []
(liste vide)
Une liste dans le même format que ADMINS
qui détermine qui doit recevoir les notifications de liens brisés lorsque BrokenLinkEmailsMiddleware
est activé.
MEDIA_ROOT
¶
Valeur par défaut : ''
(Chaîne vide)
Chemin absolu de système de fichiers pointant vers le répertoire qui contiendra les fichiers téléversés par les utilisateurs.
Exemple : "/var/www/example.com/media/"
Voir aussi MEDIA_URL
.
Avertissement
MEDIA_ROOT
et STATIC_ROOT
doivent avoir des valeurs différentes. Avant que STATIC_ROOT
soit introduit, il était fréquent de compter ou de se replier sur MEDIA_ROOT
pour servir également les fichiers statiques ; cependant, comme cela peut avoir des conséquences graves pour la sécurité, il y a un contrôle de validation pour l’empêcher.
MEDIA_URL
¶
Valeur par défaut : ''
(Chaîne vide)
URL qui gère les fichiers médias servis à partir de MEDIA_ROOT
, utilisée pour la gestion des fichiers stockés. Elle doit se terminer par une barre oblique si elle ne contient pas de valeur vide. Il sera nécessaire de configurer ces fichiers afin d’être servis aussi bien en environnement de développement que de production.
Si vous souhaitez utiliser {{ MEDIA_URL }}
dans vos gabarits, ajoutez 'django.template.context_processors.media'
dans l’option 'context_processors'
de TEMPLATES
.
Exemple : "http://media.example.com/"
Avertissement
Il existe des risques de sécurité si vous acceptez du contenu téléversé de la part d’utilisateurs non fiables. Consultez le sujet User-uploaded content du guide de sécurité pour des détails sur les mesures de réduction des risques.
Avertissement
MEDIA_URL
et STATIC_URL
doivent avoir des valeurs différentes. Voir MEDIA_ROOT
pour plus de détails.
Note
Si MEDIA_URL
est un chemin relatif, il sera préfixé par la valeur de SCRIPT_NAME
fournie par le serveur (ou /
si non défini). Cela rend plus simple la configuration d’une application Django dans un sous-chemin sans devoir ajouter une configuration supplémentaire aux réglages.
MIGRATION_MODULES
¶
Valeur par défaut : {}
(dictionnaire vide)
Un dictionnaire indiquant le paquet où les modules de migration peuvent être trouvés pour chaque application. La valeur par défaut de ce réglage est un dictionnaire vide, mais le nom de paquet par défaut pour les modules de migration est migrations
.
Exemple :
{"blog": "blog.db_migrations"}
Dans ce cas, les migrations concernant l’application blog
seront contenues dans le paquet blog.db_migrations
.
Si vous fournissez le paramètre app_label
, makemigrations
crée automatiquement le paquet s’il n’existe pas déjà.
Lorsque vous fournissez None
comme valeur pour une application, Django considère l’application comme sans migrations, sans prendre en compte un éventuel sous-module migrations
existant. Ceci peut être utilisé, par exemple, dans un fichier de réglages de test pour sauter les migrations durant les tests (les tables seront quand même créées pour les modèles des applications). Pour désactiver les migrations de toutes les applications pendant les tests, vous pouvez définir le réglage MIGRATE
à False
. Si MIGRATION_MODULES
est utilisé dans les réglages généraux du projet, pensez à utiliser l’option migrate --run-syncdb
si vous souhaitez créer les tables de l’application.
MONTH_DAY_FORMAT
¶
Valeur par défaut : 'F j'
Le format par défaut à utiliser pour les champs date dans les listes pour modifications des pages de l’administration de Django, et potentiellement dans d’autres parties du système, dans les cas où seuls le mois et le jour sont affichés.
Par exemple, lorsqu’une page de liste pour modification de l’administration de Django est filtrée par un choix de date, l’en-tête d’un jour donné affiche le jour et le mois. Différentes locales présentent différents formats. Par exemple, l’anglais américain affichera « January 1, » alors que l’espagnol affichera « 1 Enero. ».
Notez que lorsque USE_L10N
vaut True
, le format piloté par la locale qui correspond a une priorité plus élevée et remplace ce séparateur.
Voir chaînes de format de date autorisées
. Voir aussi DATE_FORMAT
, DATETIME_FORMAT
, TIME_FORMAT
et YEAR_MONTH_FORMAT
.
NUMBER_GROUPING
¶
Valeur par défaut : 0
Nombre de chiffres groupés dans la partie entière d’un nombre.
L’utilisation habituelle est d’afficher un séparateur de milliers. Si ce réglage est à 0
, aucun groupement n’est effectué. S’il est plus grand que 0
, THOUSAND_SEPARATOR
est utilisé comme séparateur entre ces groupes.
Certaines locales utilisent un groupement des chiffres non uniforme, par ex. 10,00,00,000
pour en_IN
. Dans ce cas, il est possible d’indiquer une liste avec les tailles de groupes de chiffres à appliquer. Le premier nombre définit la taille du groupe précédant le délimiteur décimal, et chaque nombre suivant définit la taille des groupes précédents. Si la liste se termine par -1
, le groupement des chiffres s’arrête. Si la liste se termine par un 0
, la dernière taille de groupe est utilisée pour le reste du nombre.
Tuple d’exemple pour en_IN
:
NUMBER_GROUPING = (3, 2, 0)
Notez que lorsque USE_L10N
vaut True
, le format piloté par la locale a une priorité plus élevée et remplace ce séparateur.
Voir aussi DECIMAL_SEPARATOR
, THOUSAND_SEPARATOR
et USE_THOUSAND_SEPARATOR
.
PREPEND_WWW
¶
Valeur par défaut : False
Indique s’il faut préfixer le sous-domaine « www. » aux URL qui ne l’ont pas. Utilisé seulement si CommonMiddleware
est installé (voir Middleware). Voir aussi APPEND_SLASH
.
ROOT_URLCONF
¶
Valeur par défaut : non définie
Une chaîne représentant le chemin d’importation Python complet vers votre URLconf racine, par exemple "mesapplisdjango.urls"
. Il peut être surchargé pour chaque requête en définissant l’attribut urlconf
de l’objet HttpRequest
entrant. Voir How Django processes a request pour plus de détails.
SECRET_KEY
¶
Valeur par défaut : ''
(Chaîne vide)
La clé secrète d’une installation Django. Elle est utilisée dans le contexte de la signature cryptographique, et doit être définie à une valeur unique et non prédictible.
django-admin startproject
ajoute automatiquement une valeur SECRET_KEY
générée aléatoirement dans chaque nouveau projet.
L’emploi de cette clé ne devrait pas présupposer qu’il s’agit de texte ou d’octets. Chaque utilisation devrait faire appel à force_str()
ou force_bytes()
pour la convertir dans le type souhaité.
Django refuse de démarrer si SECRET_KEY
n’est pas défini.
Avertissement
Gardez cette valeur secrète.
Le fonctionnement de Django avec une clé SECRET_KEY
connue réduit à néant de nombreuses protections de sécurité de Django et peut amener à une élévation de privilèges et à des vulnérabilités d’exécution de code à distance.
La clé secrète est utilisée pour :
- Toutes les sessions si vous utilisez un autre moteur de sessions que
django.contrib.sessions.backends.cache
ou que vous utilisez la méthodeget_session_auth_hash()
par défaut. - Tous les messages si vous utilisez les moteurs de stockage
CookieStorage
ouFallbackStorage
. - Tous les jetons de
PasswordResetView
. - Tout emploi de la signature cryptographique, sauf si une clé différente est fournie.
Losrqu’une clé secrète ne correspond plus à SECRET_KEY
ou ne figure plus dans SECRET_KEY_FALLBACKS
, tout les points ci-dessus seront invalidés. Lors d’une rotation de clé secrète, l’ancienne clé devrait être placée temporairement dans SECRET_KEY_FALLBACKS
. Les clés secrètes ne sont pas utilisées pour les mots de passe des utilisateurs, la rotation des clés ne les touche donc pas.
Note
Le fichier settings.py
créé par défaut par django-admin startproject
crée une clé SECRET_KEY
unique par commodité.
SECRET_KEY_FALLBACKS
¶
Valeur par défaut : []
Une liste de clés secrètes de repli pour une installation particulière de Django. Elles permettent d’effectuer des rotations de la clé SECRET_KEY
.
Afin d’effectuer une rotation des clés secrètes, définissez une nouvelle SECRET_KEY
et placez l’ancienne valeur au début de la liste SECRET_KEY_FALLBACKS
. Puis enlevez les anciennes valeurs en fin de SECRET_KEY_FALLBACKS
lorsque vous pensez être prêt à faire expirer les sessions, jetons de réinitialisation de mots de passe, etc. encore liés à ces anciennes clés.
Note
Les opérations de signatures sont lourdes à calculer. La présence de plusieurs anciennes clés dans la liste SECRET_KEY_FALLBACKS
ajoute de la charge supplémentaire à tous les contrôles qui ne correspondent pas à une clé précédente.
Cela signifie que les valeurs de repli devraient être enlevées après un intervalle de temps approprié, permettant la rotation des clés.
L’emploi des valeurs de clé secrète ne devrait pas présupposer qu’il s’agit de texte ou d’octets. Chaque utilisation devrait faire appel à force_str()
ou force_bytes()
pour la convertir dans le type souhaité.
SECURE_CONTENT_TYPE_NOSNIFF
¶
Valeur par défaut : True
Si True
, l’intergiciel SecurityMiddleware
définit l’en-tête X-Content-Type-Options: nosniff pour toutes les réponses qui ne l’ont pas déjà.
SECURE_CROSS_ORIGIN_OPENER_POLICY
¶
Valeur par défaut : 'same-origin'
S’il ne contient pas None
, l’intergiciel SecurityMiddleware
définit l’en-tête Politique d’ouverture d’origine croisée pour toutes les réponses qui ne l’ont pas déjà avec la valeur indiquée.
SECURE_HSTS_INCLUDE_SUBDOMAINS
¶
Valeur par défaut : False
Si True
, l’intergiciel SecurityMiddleware
ajoute la directive includeSubDomains
à l’en-tête Sécurité de transport HTTP stricte (HSTS). Il n’a pas d’effet tant que SECURE_HSTS_SECONDS
ne contient pas une valeur différente de zéro.
Avertissement
Une définition incorrecte de ce paramètre peut casser votre site de manière irréversible (pour la durée de SECURE_HSTS_SECONDS
). Lisez d’abord la documentation Sécurité de transport HTTP stricte (HSTS).
SECURE_HSTS_PRELOAD
¶
Valeur par défaut : False
Si True
, l’intergiciel SecurityMiddleware
ajoute la directive preload
à l’en-tête Sécurité de transport HTTP stricte (HSTS). Il n’a pas d’effet tant que SECURE_HSTS_SECONDS
ne contient pas une valeur différente de zéro.
SECURE_HSTS_SECONDS
¶
Valeur par défaut : 0
Si défini à un nombre entier autre que 0, l’intergiciel SecurityMiddleware
définit l’en-tête Sécurité de transport HTTP stricte (HSTS) pour toutes les réponses qui ne l’ont pas déjà.
Avertissement
Une définition incorrecte de ce paramètre peut casser votre site de manière irréversible (pour un certain temps). Lisez d’abord la documentation Sécurité de transport HTTP stricte (HSTS).
SECURE_PROXY_SSL_HEADER
¶
Valeur par défaut : None
Un tuple représentant une combinaison en-tête/valeur HTTP signifiant qu’une requête est sécurisée. Ce réglage contrôle le comportement de la méthode is_secure()
de l’objet requête.
Par défaut, is_secure()
détermine si une requête est sécurisée en vérifiant que le protocole de l’URL demandée utilise https://
. Cette méthode est importante pour la protection CSRF de Django et peut être utilisée par votre propre code ou des applications tierces.
Si votre application Django est derrière un serveur mandataire (proxy), celui-ci peut masquer le fait que la requête est en HTTPS. Si une connexion non HTTPS est établie entre le serveur mandataire et Django, is_secure()
renvoie toujours False
, même pour les requêtes qui ont été initiées en HTTPS par l’utilisateur final. Au contraire, si une connexion HTTPS est établie entre le serveur mandataire et Django, is_secure()
renvoie toujours True
, même pour les requêtes qui ont été originellement initiées en HTTP.
Dans cette situation, configurez votre serveur mandataire pour qu’il définisse un en-tête HTTP indiquant à Django si la requête est arrivée en HTTPS ; le réglage SECURE_PROXY_SSL_HEADER
permet de signaler à Django le nom de l’en-tête où il doit chercher cette information.
Définissez un tuple contenant deux éléments : le nom de l’en-tête à examiner et la valeur requise. Par exemple :
SECURE_PROXY_SSL_HEADER = ("HTTP_X_FORWARDED_PROTO", "https")
Cela indique à Django de faire confiance à l’en-tête X-Forwarded-Proto
ajouté par le serveur mandataire et que la requête provient bien d’une connexion sécurisée (c’est-à-dire qu’elle est arrivée par HTTPS), quand :
- la valeur de l’en-tête est
'https'
ou - sa valeur initiale la plus à gauche est
'https'
dans le cas d’une liste de protocoles séparés par une virgule (ex:'https,http,http'
).
La prise en charge dans la valeur d’en-tête de listes de protocoles séparés par une virgule a été ajoutée.
Ce réglage ne doit être défini qu’à la condition que vous soyez maître du serveur mandataire ou que vous ayez la garantie que l’en-tête soit ajouté ou enlevé de manière appropriée.
Notez que le nom de l’en-tête doit être dans le format utilisé par request.META
, tout en majuscules et commençant probablement par HTTP_
(souvenez-vous que Django ajoute automatiquement 'HTTP_'
au début des noms d’en-têtes X avant de les rendre accessibles dans request.META
).
Avertissement
La modification de ce réglage peut compromettre la sécurité de votre site. Assurez-vous de bien comprendre votre configuration avant de le modifier.
Assurez-vous que TOUS les points ci-après sont vrais avant de définir ce réglage (en prenant comme exemple les valeurs ci-dessus) :
- Votre application Django est derrière un serveur mandataire.
- Le serveur mandataire ôte les en-têtes
X-Forwarded-Proto
de toute requête entrante, même quand ils contiennent une liste de protocoles séparés par des virgules. En d’autres termes, si des utilisateurs ajoutent cet en-tête dans leurs requêtes, le serveur mandataire n’en tient aucun compte. - Le serveur mandataire définit l’en-tête
X-Forwarded-Proto
et le transmet à Django, mais seulement pour les requêtes arrivées par HTTPS.
Si l’un de ces points n’est pas réalisé, il vaut mieux laisser ce réglage à None
et trouver une autre façon de déterminer la provenance HTTPS, peut-être au moyen d’un middleware personnalisé.
SECURE_REDIRECT_EXEMPT
¶
Valeur par défaut : []
(liste vide)
Si un chemin d’URL correspond à une expression régulière de cette liste, la requête ne sera pas redirigée vers HTTPS. Comme l’intergiciel SecurityMiddleware
enlève les barres obliques initiales des chemins d’URL, les motifs ne doivent pas les inclure, par ex. SECURE_REDIRECT_EXEMPT = [r'^no-ssl/$', …]
. Si SECURE_SSL_REDIRECT
vaut False
, ce réglage n’a pas d’effet.
SECURE_REFERRER_POLICY
¶
Valeur par défaut : 'same-origin'
S’il est configuré, l’intergiciel SecurityMiddleware
définit l’en-tête Politique de référencement pour toutes les réponses qui ne l’ont pas déjà avec la valeur indiquée.
SECURE_SSL_HOST
¶
Valeur par défaut : None
Si défini à une chaîne (par ex. secure.example.com
), toutes les redirections SSL seront redirigées vers cet hôte au lieu de l’hôte d’origine (par ex. www.example.com
). Si SECURE_SSL_REDIRECT
vaut False
, ce réglage n’as pas d’effet.
SECURE_SSL_REDIRECT
¶
Valeur par défaut : False
Si True
, SecurityMiddleware
redirige toutes les requêtes non HTTPS vers HTTPS (sauf pour les URL correspondant à une expression régulière figurant dans SECURE_REDIRECT_EXEMPT
).
Note
Si en définissant ce réglage à True
vous obtenez des redirections infinies, cela signifie probablement que votre site fonctionne derrière un serveur mandataire (proxy) et ne peut pas savoir quelles requêtes sont sécurisées et celles qui ne le sont pas. Il est probable que le serveur mandataire définisse un en-tête pour indiquer les requêtes sécurisées ; vous pouvez alors corriger le problème en cherchant cet en-tête et en ajoutant son nom dans le réglage SECURE_PROXY_SSL_HEADER
.
SERIALIZATION_MODULES
¶
Valeur par défaut : non définie
Un dictionnaire de modules contenant des définitions de sérialiseurs (sous forme de chaînes) dont les clés sont des identifiants textuels pour le type de sérialisation correspondant. Par exemple, pour définir un sérialiseur YAML :
SERIALIZATION_MODULES = {"yaml": "path.to.yaml_serializer"}
SERVER_EMAIL
¶
Valeur par défaut : 'root@localhost'
L’adresse électronique utilisée comme expéditeur des messages d’erreur, comme ceux envoyés aux ADMINS
et aux MANAGERS
.
Pourquoi mes courriels sont-ils envoyés à partir d’une autre adresse ?
Cette adresse est uniquement utilisée pour les messages d’erreur. Il ne s’agit pas de l’adresse utilisée par send_mail()
pour l’envoi de courriers électroniques habituels ; pour cela, voir DEFAULT_FROM_EMAIL
.
SHORT_DATE_FORMAT
¶
Valeur par défaut : 'm/d/Y'
(ex . : 12/31/2003
)
Un format disponible pour l’affichage des champs dates dans les gabarits. Notez que si USE_L10N
est défini à True
, le format piloté par la locale a une priorité plus élevée et remplacera ce format. Voir les chaînes de format de date autorisées
.
Voir aussi DATE_FORMAT
et SHORT_DATETIME_FORMAT
.
SHORT_DATETIME_FORMAT
¶
Valeur par défaut : 'm/d/Y P'
(ex . : 12/31/2003 4 p.m.
)
Un format disponible pour l’affichage des champs dates/heures dans les gabarits. Notez que si USE_L10N
est défini à True
, le format piloté par la locale a une priorité plus élevée et remplacera ce format. Voir les chaînes de format de date autorisées
.
Voir aussi DATE_FORMAT
et SHORT_DATE_FORMAT
.
SIGNING_BACKEND
¶
Valeur par défaut : 'django.core.signing.TimestampSigner'
Le moteur utilisé pour signer les cookies et d’autres données.
Voir aussi la documentation sur Cryptographic signing.
SILENCED_SYSTEM_CHECKS
¶
Valeur par défaut : []
(liste vide)
Une liste d’identifiants de messages générés par l’infrastructure de contrôle système (par ex: ["models.W001"]
) que vous souhaitez ignorer de manière permanente. Les contrôles ainsi masqués n’apparaissent plus dans la console.
Voir aussi la documentation Infrastructure de contrôle système.
STORAGES
¶
Valeur par défaut :
{
"default": {
"BACKEND": "django.core.files.storage.FileSystemStorage",
},
"staticfiles": {
"BACKEND": "django.contrib.staticfiles.storage.StaticFilesStorage",
},
}
Un dictionnaire contenant les réglages de tous les stockages à utiliser avec Django. C’est un dictionnaire imbriqué dont les contenus font correspondre l’alias de stockage avec un dictionnaire contenant les options de chacun des stockages.
Le choix d’alias de stockage est libre. Cependant, deux noms d’alias ont une signification particulière :
default
pour la gestion des fichiers.'
django.core.files.storage.FileSystemStorage
'
est le moteur de stockage par défaut.staticfiles
pour la gestion des fichiers statiques.'
django.contrib.staticfiles.storage.StaticFilesStorage
'
est le moteur de stockage par défaut.
Voici un exemple d’extrait de settings.py
définissant un stockage de fichiers personnalisé appelé example
:
STORAGES = {
# ...
"example": {
"BACKEND": "django.core.files.storage.FileSystemStorage",
"OPTIONS": {
"location": "/example",
"base_url": "/example/",
},
},
}
Les OPTIONS
sont transmises au moteur BACKEND
comme paramètres **kwargs
lors de son initialisation.
Une instance prête à l’emploi des moteurs de stockage peut être obtenue à partir de django.core.files.storage.storages
. Utilisez une clé correspondant à la définition du moteur dans STORAGES
.
Ma valeur est-elle fusionnée avec les valeurs par défaut ?
La définition de ce réglage écrase les valeurs par défaut et il n’y a donc pas de fusion avec le réglage par défaut.
TEMPLATES
¶
Valeur par défaut : []
(liste vide)
Une liste contenant les réglages de tous les moteurs de gabarit à utiliser avec Django. Chaque élément de la liste est un dictionnaire contenant les options de chacun des moteurs.
Voici une configuration qui indique au moteur de gabarit de Django de charger les gabarits à partir du sous-répertoire templates
de chaque application installée :
TEMPLATES = [
{
"BACKEND": "django.template.backends.django.DjangoTemplates",
"APP_DIRS": True,
},
]
Les options suivantes sont disponibles pour tous les moteurs.
BACKEND
¶
Valeur par défaut : non définie
Le moteur de gabarit à utiliser. Les moteurs de gabarit intégrés à Django sont :
'django.template.backends.django.DjangoTemplates'
'django.template.backends.jinja2.Jinja2'
Vous pouvez utiliser un moteur de gabarit non livré avec Django en définissant BACKEND
à un chemin complètement qualifié (par ex. monpaquet.moteurs.Backend
).
NAME
¶
Valeur par défaut :: voir ci-dessous
L’alias de ce moteur de gabarit particulier. Il s’agit d’un identifiant qui permet de choisir un moteur pour le processus de rendu. Les alias doivent être uniques parmi tous les moteurs de gabarit configurés.
Sa valeur par défaut contient le nom du module définissant la classe du moteur, c’est-à-dire l’avant-dernier élément de BACKEND
, lorsque celui-ci est présent. Par exemple, si le moteur est 'mypackage.whatever.Backend'
, le nom par défaut vaut 'whatever'
.
DIRS
¶
Valeur par défaut : []
(liste vide)
Répertoires dans lesquels le moteur recherche des fichiers sources de gabarits, dans l’ordre de leur recherche.
APP_DIRS
¶
Valeur par défaut : False
Indique si le moteur recherche des fichiers sources de gabarits dans les applications installées.
Note
Le fichier settings.py
créé par défaut par django-admin startproject
définit 'APP_DIRS': True
.
OPTIONS
¶
Valeur par défaut : {}
(dictionnaire vide)
Paramètres supplémentaires à passer au moteur de gabarit. Les paramètres disponibles varient en fonction du moteur. Voir DjangoTemplates
et Jinja2
pour les options des moteurs intégrés.
TEST_RUNNER
¶
Par défaut : django.test.runner.DiscoverRunner
Le nom de la classe à utiliser pour lancer la suite de tests. Voir Using different testing frameworks.
TEST_NON_SERIALIZED_APPS
¶
Valeur par défaut : []
(liste vide)
Afin de pouvoir restaurer l’état de la base de données entre les tests pour les classes TransactionTestCase
et les moteurs de base de données non transactionnels, Django sérialise le contenu de toutes les applications lorsqu’il lance la suite de tests pour pouvoir ensuite recharger ces données copiées avant de lancer les tests qui ont en besoin.
Cela ralentit le démarrage du lanceur de tests ; si vous savez que certaines applications n’ont pas besoin de cette fonctionnalité, vous pouvez ajouter leur nom complet dans ce réglage (par ex. 'django.contrib.contenttypes'
) pour les exclure du processus de sérialisation.
THOUSAND_SEPARATOR
¶
Valeur par défaut : ','
(virgule)
Séparateur de milliers utilisé par défaut lors de la mise en forme de nombres. Ce réglage n’est utilisé que lorsque USE_THOUSAND_SEPARATOR
vaut True
et que NUMBER_GROUPING
est plus grand que 0
.
Notez que lorsque USE_L10N
vaut True
, le format piloté par la locale a une priorité plus élevée et remplace ce séparateur.
Voir aussi NUMBER_GROUPING
, DECIMAL_SEPARATOR
et USE_THOUSAND_SEPARATOR
.
TIME_FORMAT
¶
Valeur par défaut : 'P'` (ex . : ``4 p.m.
)
Le format par défaut pour l’affichage des champs heures dans les différentes parties du système. Notez que si USE_L10N
est défini à True
, le format piloté par la locale a une priorité plus élevée et remplacera ce format. Voir les chaînes de format de date autorisées
.
Voir aussi DATE_FORMAT
et DATETIME_FORMAT
.
TIME_INPUT_FORMATS
¶
Valeur par défaut :
[
"%H:%M:%S", # '14:30:59'
"%H:%M:%S.%f", # '14:30:59.000200'
"%H:%M", # '14:30'
]
Une liste de formats qui seront acceptés lors de la saisie de données dans un champ heure. Les formats seront testés dans l’ordre et le premier correspondant sera utilisé. Notez que ces chaînes de format utilisent la syntaxe du module datetime de Python, et non pas celle des chaînes de format du filtre de gabarit date
.
Lorsque USE_L10N
vaut True
, le format piloté par la locale a une priorité plus élevée et remplace ce format.
Voir aussi DATE_INPUT_FORMATS
et DATETIME_INPUT_FORMATS
.
TIME_ZONE
¶
Valeur par défaut : 'America/Chicago'
Une chaîne représentant le fuseau horaire pour cette installation. Voir la liste des fuseaux horaires.
Note
Comme Django a été initialement publié avec le réglage TIME_ZONE
contenant 'America/Chicago'
, le réglage global (utilisé si aucun n’est défini dans le settings.py
du projet) reste 'America/Chicago'
pour garantir la rétrocompatibilité. Les nouveaux gabarits de projet par défaut utilisent 'UTC'
.
Notez que cela ne correspond pas forcément au fuseau horaire du serveur. Par exemple, il est imaginable qu’un site serve plusieurs instances de sites Django, chacun ayant leur propre réglage de fuseau horaire.
Lorsque USE_TZ
est défini à False
, ce réglage définit le fuseau horaire avec lequel Django stocke tous les objets dates/heures. Lorsque USE_TZ
est défini à True
, il s’agit alors du fuseau horaire que Django utilise par défaut pour afficher les dates/heures dans les gabarits et pour interpréter les valeurs dates/heures saisies dans les formulaires.
Dans les environnements Unix (où time.tzset()
est implémenté), Django définit la variable os.environ['TZ']
au fuseau horaire défini dans le réglage TIME_ZONE
. Ainsi, toutes les vues et tous les modèles opèrent automatiquement dans ce fuseau horaire. Cependant, Django ne définit pas la variable d’environnement TZ
si vous utilisez l’option de configuration manuelle décrite dans configuration manuelle des réglages. Si Django ne définit pas la variable d’environnement TZ
, c’est à vous de vous assurer que les processus fonctionnent dans le bon environnement.
Note
Django ne peut pas utiliser de fuseaux horaires différents du système de façon fiable dans un environnement Windows. Si vous faites fonctionner Django avec Windows, TIME_ZONE
doit être réglé sur le même fuseau horaire que le système.
USE_DEPRECATED_PYTZ
¶
Valeur par défaut : False
Une valeur booléenne indiquant s’il faut préférer l’utilisation de pytz
au lieu de zoneinfo
comme implémentation de fuseaux horaires par défaut.
Obsolète depuis la version 4.0: Ce réglage transitoire est obsolète. La prise en charge de pytz
sera supprimée de Django 5.0.
USE_I18N
¶
Valeur par défaut : True
Une valeur booléenne indiquant si le système de traduction de Django doit être activé. C’est un moyen de le désactiver pour gagner un peu de performances. Si défini à False
, Django optimise son fonctionnement pour ne pas charger le mécanisme de traduction.
Voir aussi LANGUAGE_CODE
, USE_L10N
et USE_TZ
.
Note
Le fichier settings.py
créé par défaut par django-admin startproject
définit USE_I18N = True
par commodité.
USE_L10N
¶
Valeur par défaut : True
Une valeur booléenne indiquant si la régionalisation du format des données est activée. Si défini à True
, Django affiche par exemple les nombres et les dates en utilisant la mise en forme correspondant à la locale active.
Voir aussi LANGUAGE_CODE
, USE_I18N
et USE_TZ
.
Obsolète depuis la version 4.0: Ce réglage est obsolète. À partir de Django 5.0, la mise en forme régionalisée des données sera toujours activée. Par exemple, Django affichera les nombres et les dates en utilisant la mise en forme de la langue active.
USE_THOUSAND_SEPARATOR
¶
Valeur par défaut : False
Une valeur booléenne indiquant si les nombres doivent être affichés avec des séparateurs de milliers. Lorsque ce réglage vaut True
et que USE_L10N
vaut également True
, Django met en forme les nombres en utilisant les valeurs des réglages NUMBER_GROUPING
et THOUSAND_SEPARATOR
. Ces deux derniers réglages peuvent aussi être définis par la locale active qui est prioritaire.
Voir aussi DECIMAL_SEPARATOR
, NUMBER_GROUPING
et THOUSAND_SEPARATOR
.
USE_TZ
¶
Valeur par défaut : False
Note
Dans Django 5.0, la valeur par défaut changera de False
à True
.
Une valeur booléenne indiquant si les dates/heures sont conscientes de leur fuseau horaire. Si défini à True
, Django utilise en interne des dates/heures conscientes de leur fuseau horaire.
Lorsque USE_TZ
vaut False
, Django utilise des dates/heures naïves en temps local, sauf si des dates mises en forme en ISO 8601 et contenant un fuseau horaire sont interprétées ; dans ce cas, le fuseau horaire est conservé.
Voir aussi TIME_ZONE
, USE_I18N
et USE_L10N
.
Note
Le fichier settings.py
créé par défaut par django-admin startproject
définit USE_TZ = True
par commodité.
USE_X_FORWARDED_HOST
¶
Valeur par défaut : False
Une valeur booléenne indiquant si l’en-tête X-Forwarded-Host
doit être favorisé aux dépends de l’en-tête Host
. Ceci ne devrait être activé que dans le cas où un serveur mandataire définit cet en-tête en amont de votre application.
Ce réglage a la priorité sur USE_X_FORWARDED_PORT
. Selon la RFC 7239#section-5.3, l’en-tête X-Forwarded-Host
peut inclure le numéro de port, auquel cas il ne faudrait pas utiliser USE_X_FORWARDED_PORT
.
USE_X_FORWARDED_PORT
¶
Valeur par défaut : False
Une valeur booléenne indiquant si l’en-tête X-Forwarded-Port
doit être favorisé aux dépends de la variable META
SERVER_PORT
. Ceci ne devrait être activé que dans le cas où un serveur mandataire définit cet en-tête en amont de votre application.
USE_X_FORWARDED_HOST
a la priorité sur ce réglage.
WSGI_APPLICATION
¶
Valeur par défaut : None
Le chemin Python complet de l’objet application WSGI que les serveurs intégrés dans Django vont utiliser (par ex. runserver
). La commande de gestion django-admin startproject
crée un fichier wsgi.py
standard contenant un exécutable application
et fait pointer ce réglage vers cet objet application
.
Si indéfini, c’est la valeur renvoyée par django.core.wsgi.get_wsgi_application()
qui sera utilisée. Dans ce cas, le comportement de runserver
sera le même que lors des versions précédentes de Django.
YEAR_MONTH_FORMAT
¶
Valeur par défaut : 'F Y'
Le format par défaut à utiliser pour les champs date dans les listes pour modifications des pages de l’administration de Django, et potentiellement dans d’autres parties du système, dans les cas où seuls l’année et le mois sont affichés.
Par exemple, lorsqu’une page de liste pour modification de l’administration de Django est filtrée par un choix de date, l’en-tête d’un mois donné affiche le mois et l’année. Différentes locales présentent différents formats. Par exemple, l’anglais américain affichera « January 2006, » alors qu’une autre locale affichera peut-être « 2006/January. ».
Notez que lorsque USE_L10N
vaut True
, le format piloté par la locale qui correspond a une priorité plus élevée et remplace ce séparateur.
Voir chaînes de format de date autorisées
. Voir aussi DATE_FORMAT
, DATETIME_FORMAT
, TIME_FORMAT
et MONTH_DAY_FORMAT
.
X_FRAME_OPTIONS
¶
Valeur par défaut : 'DENY'
La valeur par défaut de l’en-tête X-Frame-Options utilisé par XFrameOptionsMiddleware
. Voir la documentation sur la protection contre le détournement de clic.
Auth¶
Réglages pour django.contrib.auth
.
AUTHENTICATION_BACKENDS
¶
Valeur par défaut : ['django.contrib.auth.backends.ModelBackend']
Une liste de classes de moteurs d’authentification (sous forme de chaînes) à utiliser durant la tentative d’authentification d’un utilisateur. Consultez la documentation sur les moteurs d’authentification pour plus de détails.
AUTH_USER_MODEL
¶
Valeur par défaut : 'auth.User'
Le modèle à utiliser pour représenter un utilisateur. Voir Substituting a custom User model.
Avertissement
Il n’est pas possible de modifier le réglage AUTH_USER_MODEL
au cours de la vie d’un projet (c’est-à-dire après avoir créé et migré des modèles qui en dépendent) sans effort conséquent. Il est prévu pour être défini au début d’un projet et le modèle qu’il désigne doit être disponible dans la première migration de l’application dans laquelle il se trouve. Voir Substituting a custom User model pour plus de détails.
LOGIN_REDIRECT_URL
¶
Valeur par défaut : '/accounts/profile/'
L’URL ou le motif d’URL nommé vers lequel seront redirigées les requêtes après la connexion si la vue LoginView
ne reçoit pas de paramètre GET next
.
LOGIN_URL
¶
Valeur par défaut : '/accounts/login/'
L’URL ou le motif d’URL nommé vers lequel seront redirigées les requêtes pour la connexion avec le décorateur login_required()
ou les classes LoginRequiredMixin
et AccessMixin
.
LOGOUT_REDIRECT_URL
¶
Valeur par défaut : None
L’URL ou le motif d’URL nommé vers lequel seront redirigées les requêtes après la déconnexion si la vue LogoutView
ne possède pas d’attribut next_page
.
Avec None
, aucune redirection n’est effectuée et la vue de déconnexion logout
sera produite.
PASSWORD_RESET_TIMEOUT
¶
Valeur par défaut : 259200
(3 jours, en secondes)
La durée de validité d’un lien de réinitialisation de mot de passe, en secondes.
Utilisé par PasswordResetConfirmView
.
Note
La réduction de la valeur de ce délai ne fait aucune différence quant à la possibilité d’attaquer par force brute un jeton de réinitialisation de mot de passe. Les jetons sont conçus pour être protégés des attaques par force brute même sans expiration.
Ce délai existe pour protéger contre certains scénarios d’attaque peu probables, comme l’accès non autorisé à des archives de messagerie pouvant contenir des anciens jetons de réinitialisation inutilisés.
PASSWORD_HASHERS
¶
Voir How Django stores passwords.
Valeur par défaut :
[
"django.contrib.auth.hashers.PBKDF2PasswordHasher",
"django.contrib.auth.hashers.PBKDF2SHA1PasswordHasher",
"django.contrib.auth.hashers.Argon2PasswordHasher",
"django.contrib.auth.hashers.BCryptSHA256PasswordHasher",
"django.contrib.auth.hashers.ScryptPasswordHasher",
]
AUTH_PASSWORD_VALIDATORS
¶
Valeur par défaut : []
(liste vide)
La liste des validateurs utilisés pour vérifier la solidité des mots de passe des utilisateurs. Voir Password validation pour plus de détails. Par défaut, aucune validation n’est effectuée et tous les mots de passe sont acceptés.
Messages¶
Réglages pour django.contrib.messages
.
MESSAGE_LEVEL
¶
Valeur par défaut : messages.INFO
Définit le niveau minimum des messages qui seront traités par le système des messages. Voir les niveaux de message pour plus de détails.
Éviter les importations circulaires
Si vous surchargez MESSAGE_LEVEL
dans votre fichier de réglages et que vous comptez sur les constantes intégrées, vous devez importer directement le module des constantes pour éviter une éventuelle importation circulaire, par ex. :
from django.contrib.messages import constants as message_constants
MESSAGE_LEVEL = message_constants.DEBUG
Si souhaité, vous pouvez indiquer directement les valeurs numériques des constantes en fonction des valeurs dans le tableau des constantes ci-dessus.
MESSAGE_STORAGE
¶
Valeur par défaut : 'django.contrib.messages.storage.fallback.FallbackStorage'
Contrôle l’emplacement de stockage des données de messages. Les valeurs possibles sont :
'django.contrib.messages.storage.fallback.FallbackStorage'
'django.contrib.messages.storage.session.SessionStorage'
'django.contrib.messages.storage.cookie.CookieStorage'
Voir les moteurs de stockage de messages pour plus de détails.
Les moteurs qui utilisent des cookies – CookieStorage
et FallbackStorage
– utilisent les valeurs de SESSION_COOKIE_DOMAIN
, SESSION_COOKIE_SECURE
et SESSION_COOKIE_HTTPONLY
lors de la définition de leurs cookies.
MESSAGE_TAGS
¶
Valeur par défaut :
{
messages.DEBUG: "debug",
messages.INFO: "info",
messages.SUCCESS: "success",
messages.WARNING: "warning",
messages.ERROR: "error",
}
Ceci définit l’association du niveau de message à l’étiquette de message, qui est généralement rendue comme une classe CSS au format HTML. Si vous indiquez une valeur, elle étendra celle par défaut. Cela signifie que vous devez seulement définir les valeurs que vous souhaitez redéfinir. Voir Affichage des messages ci-dessus pour plus de détails.
Éviter les importations circulaires
Si vous surchargez MESSAGE_TAGS
dans votre fichier de réglages et que vous comptez sur les constantes intégrées, vous devez importer directement le module des constantes pour éviter une éventuelle importation circulaire, par ex. :
from django.contrib.messages import constants as message_constants
MESSAGE_TAGS = {message_constants.INFO: ""}
Si souhaité, vous pouvez indiquer directement les valeurs numériques des constantes en fonction des valeurs dans le tableau des constantes ci-dessus.
Sessions¶
Réglages pour django.contrib.sessions
.
SESSION_CACHE_ALIAS
¶
Valeur par défaut : 'default'
Si vous utilisez le stockage des sessions basé en cache, ce réglage choisit le cache à utiliser.
SESSION_COOKIE_AGE
¶
Valeur par défaut : 1209600
(2 semaines, en secondes)
L’âge des cookies de sessions, en secondes.
SESSION_COOKIE_DOMAIN
¶
Valeur par défaut : None
Le domaine à utiliser pour les cookies de session. Définissez ce réglage à une chaîne, comme "example.com"
pour un cookie inter-domaine, ou utilisez None
pour un cookie de domaine standard.
Pour utiliser des cookies inter-sites avec CSRF_USE_SESSIONS
, vous devez inclure un point initial (par ex. ".example.com"
) pour satisfaire le contrôle du référent par l’intergiciel CSRF.
Soyez prudent lors de la mise à jour de ce réglage sur un site de production. Si vous mettez à jour ce paramètre pour activer les cookies inter-domaines sur un site qui utilisait précédemment les cookies de domaine standards, les cookies des utilisateurs existants seront définis sur l’ancien domaine. Il peut en résulter qu’ils seront incapables de s’identifier aussi longtemps que ces cookies persistent.
Ce réglage affecte aussi les cookies définis par django.contrib.messages
.
SESSION_COOKIE_HTTPONLY
¶
Valeur par défaut : True
Indique si le drapeau HttpOnly
doit être utilisé sur le cookie de session. Si ce paramètre est défini à True
, le code JavaScript côté client ne sera pas en mesure d’accéder au cookie de session.
HttpOnly est un drapeau inclus dans un en-tête de réponse HTTP Set-Cookie. Il fait partie du standard RFC 6265#section-4.1.2.6 pour les cookies, et c’est un moyen utile de réduire le risque d’un script côté client accédant aux données d’un cookie protégé.
Cela complique la tâche d’un attaquant qui voudrait exploiter une vulnérabilité de script inter-site pour accéder sans limite à une session d’utilisateur. Il n’y a pas beaucoup de bonnes raisons de ne pas activer ce réglage. Votre code ne devrait pas lire des cookies de session à partir de JavaScript.
SESSION_COOKIE_NAME
¶
Valeur par défaut : 'sessionid'
Le nom du cookie à utiliser pour les sessions. Vous pouvez mettre ce que vous voulez (pour autant que ce soit différent de ceux qui existent déjà dans votre application).
SESSION_COOKIE_PATH
¶
Valeur par défaut : '/'
Le chemin défini dans le cookie de session. Cela doit correspondre au chemin d’URL de votre installation de Django ou être un parent de ce chemin.
Utile si vous avez plusieurs instances de Django fonctionnant sous le même nom d’hôte. Ils peuvent alors utiliser des chemins de cookies différents pour que chaque instance ne voit que son propre cookie de session.
SESSION_COOKIE_SAMESITE
¶
Valeur par défaut : 'Lax'
La valeur de l’option SameSite du cookie de session. Cette option empêche le cookie d’être envoyé dans les requêtes inter-sites, ce qui prévient les attaques CSRF et rend impossible certaines méthodes de vol du cookie de session.
Les valeurs possibles de ce réglage sont :
'Strict'
: empêche le cookie d’être envoyé par le navigateur vers le site cible dans tous les contextes de navigation inter-sites, même en suivant un lien normal.Par exemple, pour un site Web de type GitHub, cela signifierait que si un utilisateur connecté suit un lien vers un projet GitHub privé posté sur un forum de discussion interne ou un courriel, GitHub ne reçoit pas le cookie de session et l’utilisateur ne sera pas autorisé à accéder au projet. Un site web bancaire, cependant, ne voudra probablement pas permettre à n’importe quelle page transactionnelle d’être mise en lien depuis des sites externes, l’option
'Strict'
serait donc appropriée.'Lax'
(valeur par défaut) : compromis entre sécurité et facilité d’usage pour les sites web qui souhaitent maintenir les sessions connectées des utilisateurs quand ceux-ci arrivent à partir d’un lien externe.Dans le scénario GitHub, le cookie de session serait autorisé dans le cas d’un lien normal depuis un site web externe, mais serait bloqué pour des méthodes de requête sujettes à CSRF (par ex.
POST
).'None'
(chaîne) : le cookie de session sera envoyé avec toutes les requêtes du même site et inter-sites.False
: désactive l’option.
Note
Les navigateurs modernes fournissent une politique par défaut plus sûre pour l’option SameSite
et se rabattent sur la valeur Lax
pour les cookies sans valeur explicitement définie.
SESSION_COOKIE_SECURE
¶
Valeur par défaut : False
Indique s’il est nécessaire d’utiliser un cookie sécurisé pour le cookie de session. Si défini à True
, le cookie sera marqué comme « sécurisé », ce qui signifie que les navigateurs sont chargés de vérifier que le cookie n’est envoyé que pour des connexions HTTPS.
Il n’est vraiment pas conseillé de laisser ce réglage désactivé, car un attaquant pourrait capturer un cookie de session non chiffré avec un renifleur de paquet puis utiliser ce cookie pour s’introduire dans la session de l’utilisateur.
SESSION_ENGINE
¶
Valeur par défaut : 'django.contrib.sessions.backends.db'
Contrôle l’emplacement de stockage des données de sessions. Les moteurs inclus sont :
'django.contrib.sessions.backends.db'
'django.contrib.sessions.backends.file'
'django.contrib.sessions.backends.cache'
'django.contrib.sessions.backends.cached_db'
'django.contrib.sessions.backends.signed_cookies'
Voir Configuring the session engine pour plus de détails.
SESSION_EXPIRE_AT_BROWSER_CLOSE
¶
Valeur par défaut : False
Indique s’il faut que la session expire lorsque l’utilisateur ferme son navigateur. Voir Browser-length sessions vs. persistent sessions.
SESSION_FILE_PATH
¶
Valeur par défaut : None
Si vous utilisez le stockage de sessions basé sur des fichiers, cela définit le répertoire dans lequel Django stocke les données de sessions. Avec la valeur par défaut (None
), Django utilise le répertoire temporaire standard du système.
SESSION_SAVE_EVERY_REQUEST
¶
Valeur par défaut : False
Indique si les données de sessions sont enregistrées lors de chaque requête. Avec la valeur False
(par défaut), Django n’enregistre la session dans la base de données qu’au moment où la session a été modifiée, c’est-à-dire qu’au moins une des valeurs de son dictionnaire a été définie ou supprimée. Les sessions vides ne seront pas créées, même si ce réglage est activé.
SESSION_SERIALIZER
¶
Par défaut : 'django.contrib.sessions.serializers.JSONSerializer'
Chemin d’importation complet d’une classe de sérialisation à utiliser pour la sérialisation des données de session. Le sérialiseur inclus est :
'django.contrib.sessions.serializers.JSONSerializer'
Voir Session serialization pour plus de détails.
Sites¶
Réglages pour django.contrib.sites
.
SITE_ID
¶
Valeur par défaut : non définie
L’identifiant (nombre entier) du site actuel dans la table de base de données django_site
. Peut être utilisé par les applications pour lier leurs données à des sites spécifiques et ainsi gérer dans une même base de données du contenu pour plusieurs sites.
Fichiers statiques¶
Réglages pour django.contrib.staticfiles
.
STATIC_ROOT
¶
Valeur par défaut : None
Le chemin absolu vers le répertoire dans lequel collectstatic
rassemble les fichiers statiques en vue du déploiement.
Exemple : "/var/www/example.com/static/"
Si l’application complémentaire staticfiles est activée (c’est le cas dans le modèle de projet par défaut), la commande d’administration collectstatic
rassemble les fichiers statiques dans ce répertoire. Consultez le guide pratique sur la gestion des fichiers statiques pour plus de détails sur son utilisation.
Avertissement
Ce réglage doit indiquer un répertoire de destination initialement vide pour la collecte des fichiers statiques depuis leur emplacement permanent vers un répertoire unique pour faciliter le déploiement ; ce n’est pas un endroit pour stocker des fichiers statiques de manière permanente. À cet effet, il s’agit d’utiliser les répertoires qui seront recherchés par les découvreurs
de staticfiles, qui sont par défaut les sous-répertoires 'static/'
des applications et tout répertoire mentionné dans STATICFILES_DIRS
.
STATIC_URL
¶
Valeur par défaut : None
URL utilisée pour se référer aux fichiers statiques se trouvant dans STATIC_ROOT
.
Exemple : "static/"
ou "http://static.example.com/"
Si ce réglage ne vaut pas None
, il est utilisé comme chemin de base pour les définitions de fichiers annexes (la classe Media
) et l’application staticfiles.
Cette valeur doit se terminer par une barre oblique quand elle est définie.
Vous devrez peut-être configurer ces fichiers pour être servis en développement et aurez sans aucun doute besoin de le faire en production.
Note
Si STATIC_URL
est un chemin relatif, il sera préfixé par la valeur de SCRIPT_NAME
fournie par le serveur (ou /
si non défini). Cela rend plus simple la configuration d’une application Django dans un sous-chemin sans devoir ajouter une configuration supplémentaire aux réglages.
STATICFILES_DIRS
¶
Valeur par défaut : []
(liste vide)
Ce réglage définit les emplacements supplémentaires que l’application staticfiles
parcourt si la recherche par FileSystemFinder
est activée, par exemple quand vous utilisez la commande de gestion collectstatic
ou findstatic
, ou quand vous utilisez la vue de service de fichiers statiques.
Il devrait contenir une liste de chaînes contenant les chemins complets vers les répertoires de fichiers supplémentaires ; par exemple :
STATICFILES_DIRS = [
"/home/special.polls.com/polls/static",
"/home/polls.com/polls/static",
"/opt/webfiles/common",
]
Notez que ces chemins doivent utiliser des barres obliques de type Unix, même sur Windows (par ex. "C:/Users/user/mon_site/contenu_statique_suppl"
).
Préfixes (facultatifs)¶
Dans le cas où vous souhaiteriez vous référer aux fichiers d’un des emplacements avec un espace de noms supplémentaire, il est possible d’indiquer un préfixe sous la forme de tuples (préfixe, chemin)
, comme par exemple :
STATICFILES_DIRS = [
# ...
("downloads", "/opt/webfiles/stats"),
]
Par exemple, en supposant que STATIC_URL
soit défini à static/
, la commande de gestion collectstatic
recueillera les fichiers « stats » dans un sous-répertoire 'downloads'
de STATIC_ROOT
.
Cela permettrait de se référer au fichier local '/opt/webfiles/stats/polls_20101022.tar.gz'
par '/static/downloads/polls_20101022.tar.gz'
dans les gabarits ; par exemple :
<a href="{% static 'downloads/polls_20101022.tar.gz' %}">
STATICFILES_STORAGE
¶
Par défaut : django.contrib.staticfiles.storage.StaticFilesStorage
Le moteur de stockage de fichiers à utiliser lors de la collecte des fichiers statiques avec la commande d’administration collectstatic
.
Une instance prête à l’emploi du moteur de stockage défini dans ce réglage peut être trouvée dans la clé staticfiles
de django.core.files.storage.storages
.
Pour un exemple, voir Fichiers statiques sur un service cloud ou un CDN.
Obsolète depuis la version 4.2: Ce réglage est obsolète. À partir de Django 4.2, le moteur de stockage de fichiers statiques peut être configuré par le réglage STORAGES
avec la clé staticfiles
.
STATICFILES_FINDERS
¶
Valeur par défaut :
[
"django.contrib.staticfiles.finders.FileSystemFinder",
"django.contrib.staticfiles.finders.AppDirectoriesFinder",
]
La liste des moteurs de découverte sachant retrouver les fichiers statiques en divers endroits.
Le comportement par défaut recherche les fichiers stockés aux emplacements du réglage STATICFILES_DIRS
(en utilisant django.contrib.staticfiles.finders.FileSystemFinder
) et dans un sous-répertoire static
de chaque application (en utilisant django.contrib.staticfiles.finders.AppDirectoriesFinder
). Si plusieurs fichiers de même nom sont présents, le premier fichier trouvé est utilisé.
Un moteur de découverte est désactivé par défaut : django.contrib.staticfiles.finders.DefaultStorageFinder
. S’il est ajouté au réglage STATICFILES_FINDERS
, il recherche les fichiers statiques dans l’emplacement de stockage des fichiers par défaut tel que défini par la clé default
du réglage STORAGES
.
Note
Lorsqu’on utilise le moteur AppDirectoriesFinder
, il faut s’assurer que les applications peuvent être trouvées par staticfiles
en ajoutant l’application au réglage INSTALLED_APPS
du site.
Les moteurs de découverte de fichiers statiques sont actuellement considérés comme une interface privée, ce qui explique que cette interface n’est pas documentée.
Index thématique des réglages de base¶
Base de données¶
Débogage¶
Messagerie¶
Signalement d’erreurs¶
Téléversement de fichiers¶
Formulaires¶
Traduction et régionalisation (i18n
/l10n
)¶
DATE_FORMAT
DATE_INPUT_FORMATS
DATETIME_FORMAT
DATETIME_INPUT_FORMATS
DECIMAL_SEPARATOR
FIRST_DAY_OF_WEEK
FORMAT_MODULE_PATH
LANGUAGE_CODE
LANGUAGE_COOKIE_AGE
LANGUAGE_COOKIE_DOMAIN
LANGUAGE_COOKIE_HTTPONLY
LANGUAGE_COOKIE_NAME
LANGUAGE_COOKIE_PATH
LANGUAGE_COOKIE_SAMESITE
LANGUAGE_COOKIE_SECURE
LANGUAGES
LANGUAGES_BIDI
LOCALE_PATHS
MONTH_DAY_FORMAT
NUMBER_GROUPING
SHORT_DATE_FORMAT
SHORT_DATETIME_FORMAT
THOUSAND_SEPARATOR
TIME_FORMAT
TIME_INPUT_FORMATS
TIME_ZONE
USE_I18N
USE_L10N
USE_THOUSAND_SEPARATOR
USE_TZ
YEAR_MONTH_FORMAT
HTTP¶
Journalisation¶
Sécurité¶
- Protection contre le « Cross site request forgery » (CSRF)
SECRET_KEY
SECRET_KEY_FALLBACKS
X_FRAME_OPTIONS
Sérialisation¶
Tests¶
- Base de données :
TEST
TEST_NON_SERIALIZED_APPS
TEST_RUNNER