{"title":"Les réglages de Django","version":"3.2","locale":"fr","docname":"topics/settings","url":"/fr/3.2/topics/settings/","canonical":"https://djangodocs.dev/fr/3.2/topics/settings/","summary":"Un fichier de réglages Django contient toute la configuration de votre installation de Django. Ce document explique le fonctionnement des réglages et quels sont les…","html":"<h1>Les réglages de Django<a class=\"heading-anchor\" href=\"#django-settings\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>Un fichier de réglages Django contient toute la configuration de votre installation de Django. Ce document explique le fonctionnement des réglages et quels sont les réglages disponibles.</p>\n<section id=\"the-basics\">\n<h2>Principes de base<a class=\"heading-anchor\" href=\"#the-basics\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Un fichier de réglages n’est qu’un module Python avec des variables de niveau module.</p>\n<p>Voici quelques exemples de réglages :</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"n\">ALLOWED_HOSTS</span> <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"s1\">&#39;www.example.com&#39;</span><span class=\"p\">]</span>\n<span class=\"n\">DEBUG</span> <span class=\"o\">=</span> <span class=\"kc\">False</span>\n<span class=\"n\">DEFAULT_FROM_EMAIL</span> <span class=\"o\">=</span> <span class=\"s1\">&#39;webmaster@example.com&#39;</span>\n</code></pre></div>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Note</p>\n<p>Si vous définissez <a class=\"reference internal\" href=\"/fr/3.2/ref/settings/#std-setting-DEBUG\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">DEBUG</span></code></a> à <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code>, vous devez également définir correctement le réglage <a class=\"reference internal\" href=\"/fr/3.2/ref/settings/#std-setting-ALLOWED_HOSTS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">ALLOWED_HOSTS</span></code></a>.</p>\n</aside>\n<p>Comme un fichier de réglages est un module Python, les points suivants s’appliquent :</p>\n<ul>\n<li><p>Il n’accepte pas les erreurs de syntaxe Python.</p></li>\n<li><p>Il peut attribuer des valeurs de réglages dynamiques avec la syntaxe Python habituelle. Par exemple :</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"n\">MY_SETTING</span> <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"nb\">str</span><span class=\"p\">(</span><span class=\"n\">i</span><span class=\"p\">)</span> <span class=\"k\">for</span> <span class=\"n\">i</span> <span class=\"ow\">in</span> <span class=\"nb\">range</span><span class=\"p\">(</span><span class=\"mi\">30</span><span class=\"p\">)]</span>\n</code></pre></div>\n</li>\n<li><p>Il peut importer des valeurs provenant d’autres fichiers de réglages.</p></li>\n</ul>\n</section>\n<section id=\"designating-the-settings\">\n<span id=\"django-settings-module\"></span><h2>Définition du fichier de réglages<a class=\"heading-anchor\" href=\"#designating-the-settings\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"std envvar\">\n<dt class=\"sig sig-object std\" id=\"envvar-DJANGO_SETTINGS_MODULE\">\n<span class=\"sig-name descname\"><span class=\"pre\">DJANGO_SETTINGS_MODULE</span></span><a class=\"heading-anchor\" href=\"#envvar-DJANGO_SETTINGS_MODULE\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Quand vous utilisez Django, vous devez lui indiquer le fichier de réglages qu’il doit utiliser. Vous pouvez le faire par une variable d’environnement, <span class=\"target\" id=\"index-20\"></span><a class=\"reference internal\" href=\"#envvar-DJANGO_SETTINGS_MODULE\"><code class=\"xref std std-envvar docutils literal notranslate\"><span class=\"pre\">DJANGO_SETTINGS_MODULE</span></code></a>.</p>\n<p>La valeur de <span class=\"target\" id=\"index-21\"></span><a class=\"reference internal\" href=\"#envvar-DJANGO_SETTINGS_MODULE\"><code class=\"xref std std-envvar docutils literal notranslate\"><span class=\"pre\">DJANGO_SETTINGS_MODULE</span></code></a> doit respecter la syntaxe des chemins Python, par ex. <code class=\"docutils literal notranslate\"><span class=\"pre\">mysite.settings</span></code>. Notez que le module de réglages doit se trouver dans le <a class=\"reference external\" href=\"https://diveinto.org/python3/your-first-python-program.html#importsearchpath\">chemin de recherche d’importation</a> Python.</p>\n<section id=\"the-django-admin-utility\">\n<h3>L’utilitaire <code class=\"docutils literal notranslate\"><span class=\"pre\">django-admin</span></code><a class=\"heading-anchor\" href=\"#the-django-admin-utility\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Quand vous utilisez <a class=\"reference internal\" href=\"/fr/3.2/ref/django-admin/\"><span class=\"doc\">django-admin</span></a>, vous pouvez soit définir une seule fois la variable d’environnement, soit lui transmettre explicitement le module de réglages à chaque lancement de la commande.</p>\n<p>Exemple (shell Unix bash) :</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"n\">export</span> <span class=\"n\">DJANGO_SETTINGS_MODULE</span><span class=\"o\">=</span><span class=\"n\">mysite</span><span class=\"o\">.</span><span class=\"n\">settings</span>\n<span class=\"n\">django</span><span class=\"o\">-</span><span class=\"n\">admin</span> <span class=\"n\">runserver</span>\n</code></pre></div>\n<p>Exemple (shell Windows) :</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"nb\">set</span> <span class=\"n\">DJANGO_SETTINGS_MODULE</span><span class=\"o\">=</span><span class=\"n\">mysite</span><span class=\"o\">.</span><span class=\"n\">settings</span>\n<span class=\"n\">django</span><span class=\"o\">-</span><span class=\"n\">admin</span> <span class=\"n\">runserver</span>\n</code></pre></div>\n<p>Utilisez le paramètre de ligne de commande <code class=\"docutils literal notranslate\"><span class=\"pre\">--settings</span></code> pour indiquer manuellement le fichier de réglages :</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"n\">django</span><span class=\"o\">-</span><span class=\"n\">admin</span> <span class=\"n\">runserver</span> <span class=\"o\">--</span><span class=\"n\">settings</span><span class=\"o\">=</span><span class=\"n\">mysite</span><span class=\"o\">.</span><span class=\"n\">settings</span>\n</code></pre></div>\n</section>\n<section id=\"on-the-server-mod-wsgi\">\n<h3>Sur le serveur (<code class=\"docutils literal notranslate\"><span class=\"pre\">mod_wsgi</span></code>)<a class=\"heading-anchor\" href=\"#on-the-server-mod-wsgi\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Dans l’environnement de production de votre serveur, vous devrez indiquer à votre application WSGI quel fichier de réglages il doit utiliser. Faites-le avec <code class=\"docutils literal notranslate\"><span class=\"pre\">os.environ</span></code>:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">import</span><span class=\"w\"> </span><span class=\"nn\">os</span>\n\n<span class=\"n\">os</span><span class=\"o\">.</span><span class=\"n\">environ</span><span class=\"p\">[</span><span class=\"s1\">&#39;DJANGO_SETTINGS_MODULE&#39;</span><span class=\"p\">]</span> <span class=\"o\">=</span> <span class=\"s1\">&#39;mysite.settings&#39;</span>\n</code></pre></div>\n<p>Lisez la <a class=\"reference internal\" href=\"/fr/3.2/howto/deployment/wsgi/modwsgi/\"><span class=\"doc\">documentation Django de mod_wsgi</span></a> pour plus d’informations ainsi que d’autres éléments communs à toute application WSGI Django.</p>\n</section>\n</section>\n<section id=\"default-settings\">\n<h2>Réglages par défaut<a class=\"heading-anchor\" href=\"#default-settings\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Un fichier de réglages Django n’a aucune obligation de définir des réglages s’il n’y a pas de besoins avérés. Chaque réglage possède une valeur par défaut logique. Ces valeurs par défaut se trouvent dans le module <code class=\"file docutils literal notranslate\"><span class=\"pre\">django/conf/global_settings.py</span></code>.</p>\n<p>Voici l’algorithme utilisé par Django pour compiler les réglages :</p>\n<ul class=\"simple\">\n<li><p>Charger les réglages de</p></li>\n<li><p>Charger les réglages du fichier de réglages en vigueur, surchargeant les réglages globaux si nécessaire.</p></li>\n</ul>\n<p>Notez qu’un fichier de réglages ne doit <em>pas</em> importer <code class=\"docutils literal notranslate\"><span class=\"pre\">global_settings</span></code>, car ce serait redondant.</p>\n<section id=\"seeing-which-settings-you-ve-changed\">\n<h3>Vision des réglages modifiés<a class=\"heading-anchor\" href=\"#seeing-which-settings-you-ve-changed\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>La commande <code class=\"docutils literal notranslate\"><span class=\"pre\">python</span> <span class=\"pre\">manage.py</span> <span class=\"pre\">diffsettings</span></code> affiche les différences entre le fichier de réglages actuel et les réglages par défaut de Django.</p>\n<p>Pour en savoir plus, lisez la documentation de <a class=\"reference internal\" href=\"/fr/3.2/ref/django-admin/#django-admin-diffsettings\"><code class=\"xref std std-djadmin docutils literal notranslate\"><span class=\"pre\">diffsettings</span></code></a>.</p>\n</section>\n</section>\n<section id=\"using-settings-in-python-code\">\n<h2>Utilisation des réglages dans le code Python<a class=\"heading-anchor\" href=\"#using-settings-in-python-code\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Dans vos applications Django, utilisez les réglages en important l’objet <code class=\"docutils literal notranslate\"><span class=\"pre\">django.conf.settings</span></code>. Exemple :</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.conf</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">settings</span>\n\n<span class=\"k\">if</span> <span class=\"n\">settings</span><span class=\"o\">.</span><span class=\"n\">DEBUG</span><span class=\"p\">:</span>\n    <span class=\"c1\"># Do something</span>\n</code></pre></div>\n<p>Notez que <code class=\"docutils literal notranslate\"><span class=\"pre\">django.conf.settings</span></code> n’est pas un module, c’est un objet. L’importation de réglages individuels n’est donc pas possible :</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.conf.settings</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">DEBUG</span>  <span class=\"c1\"># This won&#39;t work.</span>\n</code></pre></div>\n<p>Notez également que votre code ne doit <em>pas</em> importer ni de <code class=\"docutils literal notranslate\"><span class=\"pre\">global_settings</span></code>, ni de votre propre fichier de réglages. <code class=\"docutils literal notranslate\"><span class=\"pre\">django.conf.settings</span></code> est une abstraction du concept de réglages par défaut et de réglages spécifiques par site ; il présente une interface unifiée. Il découple aussi le code qui utilise les réglages de l’emplacement de vos réglages.</p>\n</section>\n<section id=\"altering-settings-at-runtime\">\n<h2>Modification des réglages en cours d’exécution<a class=\"heading-anchor\" href=\"#altering-settings-at-runtime\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Vous ne devriez pas modifier les réglages de vos applications durant leur exécution. Par exemple, ne faites pas ceci dans une vue :</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.conf</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">settings</span>\n\n<span class=\"n\">settings</span><span class=\"o\">.</span><span class=\"n\">DEBUG</span> <span class=\"o\">=</span> <span class=\"kc\">True</span>   <span class=\"c1\"># Don&#39;t do this!</span>\n</code></pre></div>\n<p>Le seul endroit où des réglages doivent recevoir des valeurs est le fichier des réglages.</p>\n</section>\n<section id=\"security\">\n<h2>Sécurité<a class=\"heading-anchor\" href=\"#security\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Dans la mesure où un fichier de réglages contient des informations sensibles comme des mots de passe de base de données, vous devez faire tout votre possible pour limiter l’accès à ces fichiers. Par exemple, modifiez les permissions du fichier pour que seuls vous et le serveur Web puissiez le lire. C’est particulièrement important dans le contexte d’un environnement d’hébergement partagé.</p>\n</section>\n<section id=\"available-settings\">\n<h2>Réglages disponibles<a class=\"heading-anchor\" href=\"#available-settings\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Pour une liste complète des réglages disponibles, consultez la <a class=\"reference internal\" href=\"/fr/3.2/ref/settings/\"><span class=\"doc\">référence des réglages</span></a>.</p>\n</section>\n<section id=\"creating-your-own-settings\">\n<h2>Création de ses propres réglages<a class=\"heading-anchor\" href=\"#creating-your-own-settings\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Rien ne vous empêche de créer vos propres réglages pour vos propres applications Django, mais suivez ces lignes de conduite :</p>\n<ul class=\"simple\">\n<li><p>Les noms des réglages doivent être tout en majuscules.</p></li>\n<li><p>Ne réinventez pas un réglage existant.</p></li>\n</ul>\n<p>Pour les réglages qui sont de type liste, Django utilise lui-même des listes Python, mais ce n’est qu’une convention.</p>\n</section>\n<section id=\"using-settings-without-setting-django-settings-module\">\n<span id=\"settings-without-django-settings-module\"></span><h2>Utilisation des réglages sans définir <span class=\"target\" id=\"index-12\"></span><a class=\"reference internal\" href=\"#envvar-DJANGO_SETTINGS_MODULE\"><code class=\"xref std std-envvar docutils literal notranslate\"><span class=\"pre\">DJANGO_SETTINGS_MODULE</span></code></a><a class=\"heading-anchor\" href=\"#using-settings-without-setting-django-settings-module\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Dans certains cas, il peut être souhaitable de ne pas tenir compte de la variable d’environnement <span class=\"target\" id=\"index-22\"></span><a class=\"reference internal\" href=\"#envvar-DJANGO_SETTINGS_MODULE\"><code class=\"xref std std-envvar docutils literal notranslate\"><span class=\"pre\">DJANGO_SETTINGS_MODULE</span></code></a>. Par exemple, si vous utilisez le système de gabarits pour lui-même, il n’est probablement pas utile de configurer une variable d’environnement pointant vers un module de réglages.</p>\n<p>Dans ces situations, vous pouvez configurer manuellement les réglages de Django. Faites-le en appelant :</p>\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.conf.settings.configure\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">django.conf.settings.</span></span><span class=\"sig-name descname\"><span class=\"pre\">configure</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">default_settings</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">settings</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.conf.settings.configure\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Exemple :</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.conf</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">settings</span>\n\n<span class=\"n\">settings</span><span class=\"o\">.</span><span class=\"n\">configure</span><span class=\"p\">(</span><span class=\"n\">DEBUG</span><span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Vous pouvez transmettre autant de paramètres que nécessaire à <code class=\"docutils literal notranslate\"><span class=\"pre\">configure()</span></code>, sachant que chaque paramètre nommé constituera un réglage avec sa valeur. Chaque nom de paramètre devrait être entièrement en majuscules et correspondre à l’un des paramètres existants. Si un réglage particulier n’est pas transmis à <code class=\"docutils literal notranslate\"><span class=\"pre\">configure()</span></code> et qu’il est requis plus loin dans le code, Django utilise alors la valeur par défaut du réglage.</p>\n<p>La configuration de Django de cette manière est surtout nécessaire (et même recommandée) lorsque vous utilisez une partie de l’infrastructure Django dans une application plus vaste.</p>\n<p>En conséquence, quand Django est configuré par <code class=\"docutils literal notranslate\"><span class=\"pre\">settings.configure()</span></code>, il ne fera aucune modification aux variables d’environnement du processus (consultez la documentation de <a class=\"reference internal\" href=\"/fr/3.2/ref/settings/#std-setting-TIME_ZONE\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">TIME_ZONE</span></code></a> pour savoir pourquoi cela se passe normalement). Django suppose alors que vous avez déjà le contrôle complet de votre environnement.</p>\n<section id=\"custom-default-settings\">\n<h3>Réglages par défaut personnalisés<a class=\"heading-anchor\" href=\"#custom-default-settings\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Si vous aimeriez que des valeurs par défaut proviennent d’endroits différents de <code class=\"docutils literal notranslate\"><span class=\"pre\">django.conf.global_settings</span></code>, vous pouvez transmettre un module ou une classe responsable de fournir les valeurs par défaut dans le paramètre <code class=\"docutils literal notranslate\"><span class=\"pre\">default_settings</span></code> (ou comme premier paramètre positionnel) dans l’appel à <code class=\"docutils literal notranslate\"><span class=\"pre\">configure()</span></code>.</p>\n<p>Dans cet exemple, les réglages par défaut proviennent de <code class=\"docutils literal notranslate\"><span class=\"pre\">myapp_defaults</span></code> et le paramètre <a class=\"reference internal\" href=\"/fr/3.2/ref/settings/#std-setting-DEBUG\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">DEBUG</span></code></a> est défini à <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>, quelle que soit sa valeur dans <code class=\"docutils literal notranslate\"><span class=\"pre\">myapp_defaults</span></code>:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.conf</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">settings</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">myapp</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">myapp_defaults</span>\n\n<span class=\"n\">settings</span><span class=\"o\">.</span><span class=\"n\">configure</span><span class=\"p\">(</span><span class=\"n\">default_settings</span><span class=\"o\">=</span><span class=\"n\">myapp_defaults</span><span class=\"p\">,</span> <span class=\"n\">DEBUG</span><span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>L’exemple suivant qui place <code class=\"docutils literal notranslate\"><span class=\"pre\">myapp_defaults</span></code> comme paramètre positionnel est équivalent :</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"n\">settings</span><span class=\"o\">.</span><span class=\"n\">configure</span><span class=\"p\">(</span><span class=\"n\">myapp_defaults</span><span class=\"p\">,</span> <span class=\"n\">DEBUG</span><span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Normalement, il n’est pas nécessaire de surcharger les valeurs par défaut de cette manière. Les valeurs par défaut de Django sont suffisamment éprouvées pour pouvoir les utiliser avec confiance. Sachez que lorsque vous transmettez un nouveau module de valeurs par défaut, il <em>remplace</em> entièrement les valeurs par défaut de Django, il est donc indispensable de fournir des valeurs pour chaque réglage potentiellement utilisé dans le code que vous importez. Parcourez <code class=\"docutils literal notranslate\"><span class=\"pre\">django.conf.settings.global_settings</span></code> pour voir la liste complète.</p>\n</section>\n<section id=\"either-configure-or-django-settings-module-is-required\">\n<h3>Nécessité de <code class=\"docutils literal notranslate\"><span class=\"pre\">configure()</span></code> ou de <span class=\"target\" id=\"index-14\"></span><a class=\"reference internal\" href=\"#envvar-DJANGO_SETTINGS_MODULE\"><code class=\"xref std std-envvar docutils literal notranslate\"><span class=\"pre\">DJANGO_SETTINGS_MODULE</span></code></a><a class=\"heading-anchor\" href=\"#either-configure-or-django-settings-module-is-required\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Si vous ne définissez pas la variable d’environnement <span class=\"target\" id=\"index-23\"></span><a class=\"reference internal\" href=\"#envvar-DJANGO_SETTINGS_MODULE\"><code class=\"xref std std-envvar docutils literal notranslate\"><span class=\"pre\">DJANGO_SETTINGS_MODULE</span></code></a>, vous <em>devez</em> appeler <code class=\"docutils literal notranslate\"><span class=\"pre\">configure()</span></code> avant que du code se mette à lire des réglages.</p>\n<p>Si vous ne définissez pas <span class=\"target\" id=\"index-24\"></span><a class=\"reference internal\" href=\"#envvar-DJANGO_SETTINGS_MODULE\"><code class=\"xref std std-envvar docutils literal notranslate\"><span class=\"pre\">DJANGO_SETTINGS_MODULE</span></code></a> et n’appelez pas <code class=\"docutils literal notranslate\"><span class=\"pre\">configure()</span></code>, Django lèvera une exception <code class=\"docutils literal notranslate\"><span class=\"pre\">ImportError</span></code> lors du premier accès à un réglage.</p>\n<p>Si vous définissez <span class=\"target\" id=\"index-25\"></span><a class=\"reference internal\" href=\"#envvar-DJANGO_SETTINGS_MODULE\"><code class=\"xref std std-envvar docutils literal notranslate\"><span class=\"pre\">DJANGO_SETTINGS_MODULE</span></code></a>, puis vous accédez à des valeurs de réglages d’une manière ou d’une autre, <em>puis</em> vous appelez <code class=\"docutils literal notranslate\"><span class=\"pre\">configure()</span></code>, Django lèvera une exception <code class=\"docutils literal notranslate\"><span class=\"pre\">RuntimeError</span></code> indiquant que les réglages ont déjà été configurés. Il existe une propriété pour ce cas de figure :</p>\n<p>Par exemple :</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.conf</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">settings</span>\n<span class=\"k\">if</span> <span class=\"ow\">not</span> <span class=\"n\">settings</span><span class=\"o\">.</span><span class=\"n\">configured</span><span class=\"p\">:</span>\n    <span class=\"n\">settings</span><span class=\"o\">.</span><span class=\"n\">configure</span><span class=\"p\">(</span><span class=\"n\">myapp_defaults</span><span class=\"p\">,</span> <span class=\"n\">DEBUG</span><span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Il est également erroné d’appeler <code class=\"docutils literal notranslate\"><span class=\"pre\">configure()</span></code> plus d’une fois, ou d’appeler <code class=\"docutils literal notranslate\"><span class=\"pre\">configure()</span></code> après qu’au moins un réglage ait été lu.</p>\n<p>En conclusion : utilisez soit <code class=\"docutils literal notranslate\"><span class=\"pre\">configure()</span></code>, soit <span class=\"target\" id=\"index-26\"></span><a class=\"reference internal\" href=\"#envvar-DJANGO_SETTINGS_MODULE\"><code class=\"xref std std-envvar docutils literal notranslate\"><span class=\"pre\">DJANGO_SETTINGS_MODULE</span></code></a>, mais jamais les deux et toujours au moins un des deux.</p>\n</section>\n<section id=\"calling-django-setup-is-required-for-standalone-django-usage\">\n<h3>Appel obligatoire de <code class=\"docutils literal notranslate\"><span class=\"pre\">django.setup()</span></code> pour utiliser Django de manière « indépendante »<a class=\"heading-anchor\" href=\"#calling-django-setup-is-required-for-standalone-django-usage\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Si vous utilisez des composants de Django de manière indépendante, par exemple en écrivant un script Python qui charge certains gabarits Django et les produit, ou en utilisant l’ORM pour récupérer certaines données, une étape supplémentaire est nécessaire en plus de la configuration des réglages.</p>\n<p>Après avoir soit défini <span class=\"target\" id=\"index-27\"></span><a class=\"reference internal\" href=\"#envvar-DJANGO_SETTINGS_MODULE\"><code class=\"xref std std-envvar docutils literal notranslate\"><span class=\"pre\">DJANGO_SETTINGS_MODULE</span></code></a> ou appelé <code class=\"docutils literal notranslate\"><span class=\"pre\">configure()</span></code>, vous devrez appeler <a class=\"reference internal\" href=\"/fr/3.2/ref/applications/#django.setup\" title=\"django.setup\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">django.setup()</span></code></a> pour charger les réglages et remplir le registre des applications de Django. Par exemple :</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">import</span><span class=\"w\"> </span><span class=\"nn\">django</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.conf</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">settings</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">myapp</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">myapp_defaults</span>\n\n<span class=\"n\">settings</span><span class=\"o\">.</span><span class=\"n\">configure</span><span class=\"p\">(</span><span class=\"n\">default_settings</span><span class=\"o\">=</span><span class=\"n\">myapp_defaults</span><span class=\"p\">,</span> <span class=\"n\">DEBUG</span><span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">)</span>\n<span class=\"n\">django</span><span class=\"o\">.</span><span class=\"n\">setup</span><span class=\"p\">()</span>\n\n<span class=\"c1\"># Now this script or any imported module can use any part of Django it needs.</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">myapp</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">models</span>\n</code></pre></div>\n<p>Notez que l’appel à <code class=\"docutils literal notranslate\"><span class=\"pre\">django.setup()</span></code> n’est nécessaire que si votre code est réellement indépendant. Lorsqu’il est appelé par un serveur Web ou par l’intermédiaire de <a class=\"reference internal\" href=\"/fr/3.2/ref/django-admin/\"><span class=\"doc\">django-admin</span></a>, Django se charge de procéder à cette initialisation.</p>\n<aside class=\"admonition-django-setup-may-only-be-called-once admonition\">\n<p class=\"admonition-title\"><code class=\"docutils literal notranslate\"><span class=\"pre\">django.setup()</span></code> ne peut être appelée qu’une seule fois.</p>\n<p>Ainsi, évitez de placer de la logique applicative réutilisable dans des scripts autonomes pour ne pas devoir importer le script depuis un autre endroit de votre application. Si c’est inévitable, placez l’appel à <code class=\"docutils literal notranslate\"><span class=\"pre\">django.setup()</span></code> à l’intérieur d’un bloc <code class=\"docutils literal notranslate\"><span class=\"pre\">if</span></code>:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">if</span> <span class=\"vm\">__name__</span> <span class=\"o\">==</span> <span class=\"s1\">&#39;__main__&#39;</span><span class=\"p\">:</span>\n    <span class=\"kn\">import</span><span class=\"w\"> </span><span class=\"nn\">django</span>\n    <span class=\"n\">django</span><span class=\"o\">.</span><span class=\"n\">setup</span><span class=\"p\">()</span>\n</code></pre></div>\n</aside>\n<aside class=\"admonition admonition-seealso\">\n<p class=\"admonition-title\">Voir aussi</p>\n<dl class=\"simple\">\n<dt><a class=\"reference internal\" href=\"/fr/3.2/ref/settings/\"><span class=\"doc\">La référence des réglages</span></a></dt><dd><p>Contient une liste complète des réglages de Django et de ses applications « contrib ».</p>\n</dd>\n</dl>\n</aside>\n</section>\n</section>","rootId":"django-settings","toc":[{"title":"Principes de base","anchor":"the-basics","children":[]},{"title":"Définition du fichier de réglages","anchor":"designating-the-settings","children":[{"title":"L’utilitaire django-admin","anchor":"the-django-admin-utility","children":[]},{"title":"Sur le serveur (mod_wsgi)","anchor":"on-the-server-mod-wsgi","children":[]}]},{"title":"Réglages par défaut","anchor":"default-settings","children":[{"title":"Vision des réglages modifiés","anchor":"seeing-which-settings-you-ve-changed","children":[]}]},{"title":"Utilisation des réglages dans le code Python","anchor":"using-settings-in-python-code","children":[]},{"title":"Modification des réglages en cours d’exécution","anchor":"altering-settings-at-runtime","children":[]},{"title":"Sécurité","anchor":"security","children":[]},{"title":"Réglages disponibles","anchor":"available-settings","children":[]},{"title":"Création de ses propres réglages","anchor":"creating-your-own-settings","children":[]},{"title":"Utilisation des réglages sans définir DJANGO_SETTINGS_MODULE","anchor":"using-settings-without-setting-django-settings-module","children":[{"title":"Réglages par défaut personnalisés","anchor":"custom-default-settings","children":[]},{"title":"Nécessité de configure() ou de DJANGO_SETTINGS_MODULE","anchor":"either-configure-or-django-settings-module-is-required","children":[]},{"title":"Appel obligatoire de django.setup() pour utiliser Django de manière « indépendante »","anchor":"calling-django-setup-is-required-for-standalone-django-usage","children":[]}]}],"breadcrumbs":[{"docname":"topics/index","title":"Utilisation de Django","url":"/fr/3.2/topics/"}],"prev":{"docname":"topics/serialization","title":"Sérialisation d’objets Django","url":"/fr/3.2/topics/serialization/"},"next":{"docname":"topics/signals","title":"Signaux","url":"/fr/3.2/topics/signals/"},"formats":{"html":"/fr/3.2/topics/settings/","markdown":"/fr/3.2/topics/settings.md","json":"/fr/3.2/topics/settings.json"},"source":"https://github.com/django/django/blob/stable/3.2.x/docs/topics/settings.txt","official":"https://docs.djangoproject.com/fr/3.2/topics/settings/","inVersions":["6.1","6.0","5.2","5.1","5.0","4.2","4.1","4.0","3.2","3.1","3.0","2.2","2.1","2.0","1.11","1.10","1.9"],"inLocales":["en","zh-hans","fr","ja","id","it","pt-br","ko","es","el","pl"]}