{"title":"Utilitaires Django","version":"1.11","locale":"fr","docname":"ref/utils","url":"/fr/1.11/ref/utils/","canonical":"https://djangodocs.dev/fr/1.11/ref/utils/","summary":"Ce document présente tous les modules stables dans django.utils . La plupart des modules dans django.utils sont conçus pour un usage interne et seuls les parties…","html":"<span id=\"django-utils\"></span><h1>Utilitaires Django<a class=\"heading-anchor\" href=\"#module-django.utils\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>Ce document présente tous les modules stables dans <code class=\"docutils literal notranslate\"><span class=\"pre\">django.utils</span></code>.  La plupart des modules dans <code class=\"docutils literal notranslate\"><span class=\"pre\">django.utils</span></code> sont conçus pour un usage interne et seuls les parties documentées ici peuvent être considérées comme stables et donc rétrocompatibles, selon la <a class=\"reference internal\" href=\"/fr/1.11/internals/release-process/#internal-release-deprecation-policy\"><span class=\"std std-ref\">politique interne d’obsolescence de publication</span></a>.</p>\n<section id=\"module-django.utils.cache\">\n<span id=\"django-utils-cache\"></span><h2><code class=\"docutils literal notranslate\"><span class=\"pre\">django.utils.cache</span></code><a class=\"heading-anchor\" href=\"#module-django.utils.cache\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Ce module contient des fonctions utilitaires pour le contrôle du cache. Il opère en manipulant l’en-tête <code class=\"docutils literal notranslate\"><span class=\"pre\">Vary</span></code> des réponses. Il contient des fonctions pour modifier directement l’en-tête des objets réponse ainsi que des décorateurs qui modifient les fonctions afin qu’elle se chargent elles-mêmes de la modification des en-têtes.</p>\n<p>Pour plus d’informations sur l’en-tête <code class=\"docutils literal notranslate\"><span class=\"pre\">Vary</span></code>, voir la <span class=\"target\" id=\"index-10\"></span><a class=\"rfc reference external\" href=\"https://datatracker.ietf.org/doc/html/rfc7231.html#section-7.1.4\"><strong>RFC 7231 Section 7.1.4</strong></a>.</p>\n<p>À la base, l’en-tête HTTP <code class=\"docutils literal notranslate\"><span class=\"pre\">Vary</span></code> définit quels en-têtes de requête un cache doit prendre en considération pour générer sa clé de cache. Les requêtes vers un même chemin mais contenant des contenus d’en-tête différents pour les en-têtes mentionnés dans <code class=\"docutils literal notranslate\"><span class=\"pre\">Vary</span></code> ont besoin de produire des clés de cache différentes pour ne pas délivrer de mauvais contenu.</p>\n<p>Par exemple, l’intergiciel d”<a class=\"reference internal\" href=\"/fr/1.11/topics/i18n/\"><span class=\"doc\">internationalisation</span></a> doit pouvoir mettre en cache des versions différentes en fonction de l’en-tête <code class=\"docutils literal notranslate\"><span class=\"pre\">Accept-language</span></code>.</p>\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.utils.cache.patch_cache_control\">\n<span class=\"sig-name descname\"><span class=\"pre\">patch_cache_control</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">response</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">kwargs</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.cache.patch_cache_control\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Cette fonction complète l’en-tête <code class=\"docutils literal notranslate\"><span class=\"pre\">Cache-Control</span></code> en y ajoutant tous les paramètres nommés. La transformation se fait comme suit :</p>\n<ul class=\"simple\">\n<li><p>Tous les paramètres nommés sont transformés en minuscules et les soulignements sont convertis en tirets.</p></li>\n<li><p>Si la valeur d’un paramètre est <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> (exactement <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>, pas seulement une valeur évaluée à <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>), seul le nom du paramètre est ajouté à l’en-tête.</p></li>\n<li><p>Tous les autres paramètres sont ajoutés avec leur valeur, après avoir passé par la fonction <code class=\"docutils literal notranslate\"><span class=\"pre\">str()</span></code>.</p></li>\n</ul>\n</dd></dl>\n\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.utils.cache.get_max_age\">\n<span class=\"sig-name descname\"><span class=\"pre\">get_max_age</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">response</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.cache.get_max_age\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Renvoie la valeur <code class=\"docutils literal notranslate\"><span class=\"pre\">max-age</span></code> de l’en-tête de réponse <code class=\"docutils literal notranslate\"><span class=\"pre\">Cache-Control</span></code> sous forme de nombre entier (ou <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code> s’il n’existe pas ou qu’il n’est pas un nombre entier).</p>\n</dd></dl>\n\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.utils.cache.patch_response_headers\">\n<span class=\"sig-name descname\"><span class=\"pre\">patch_response_headers</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">response</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">cache_timeout</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.cache.patch_response_headers\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Ajoute certains en-têtes utiles à l’objet <code class=\"docutils literal notranslate\"><span class=\"pre\">HttpResponse</span></code> donné :</p>\n<ul class=\"simple\">\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">ETag</span></code></p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">Expires</span></code></p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">Cache-Control</span></code></p></li>\n</ul>\n<p>Chaque en-tête n’est ajouté que s’il n’est pas déjà présent.</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">cache_timeout</span></code> est en secondes. Le réglage <a class=\"reference internal\" href=\"/fr/1.11/ref/settings/#std-setting-CACHE_MIDDLEWARE_SECONDS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">CACHE_MIDDLEWARE_SECONDS</span></code></a> est utilisé par défaut.</p>\n<aside class=\"version-note version-changed\" data-version=\"1.11\">\n<p class=\"version-note-title\">Changed in Django 1.11</p><p>Dans les versions précédentes, l’en-tête <code class=\"docutils literal notranslate\"><span class=\"pre\">Last-Modified</span></code> était aussi défini.</p>\n</aside>\n<aside class=\"version-note version-deprecated\" data-version=\"1.11\">\n<p class=\"version-note-title\">Deprecated since Django 1.11</p><p><span class=\"versionmodified deprecated\">Obsolète depuis la version 1.11: </span>Comme le réglage <code class=\"docutils literal notranslate\"><span class=\"pre\">USE_ETAGS</span></code> est obsolète, cette fonction ne définira plus l’en-tête <code class=\"docutils literal notranslate\"><span class=\"pre\">ETag</span></code> lorsque la période d’obsolescence se terminera avec Django 2.1.</p>\n</aside>\n</dd></dl>\n\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.utils.cache.add_never_cache_headers\">\n<span class=\"sig-name descname\"><span class=\"pre\">add_never_cache_headers</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">response</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.cache.add_never_cache_headers\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Ajoute un en-tête <code class=\"docutils literal notranslate\"><span class=\"pre\">Cache-Control:</span> <span class=\"pre\">max-age=0,</span> <span class=\"pre\">no-cache,</span> <span class=\"pre\">no-store,</span> <span class=\"pre\">must-revalidate</span></code> à une réponse pour indiquer que la page ne doit jamais être mise en cache.</p>\n</dd></dl>\n\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.utils.cache.patch_vary_headers\">\n<span class=\"sig-name descname\"><span class=\"pre\">patch_vary_headers</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">response</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">newheaders</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.cache.patch_vary_headers\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Ajoute (ou met à jour) l’en-tête <code class=\"docutils literal notranslate\"><span class=\"pre\">Vary</span></code> dans l’objet <code class=\"docutils literal notranslate\"><span class=\"pre\">HttpResponse</span></code> donné. <code class=\"docutils literal notranslate\"><span class=\"pre\">newheaders</span></code> est une liste de noms d’en-têtes qui doivent se trouver dans <code class=\"docutils literal notranslate\"><span class=\"pre\">Vary</span></code>. Les en-têtes existants dans <code class=\"docutils literal notranslate\"><span class=\"pre\">Vary</span></code> ne sont pas enlevés.</p>\n</dd></dl>\n\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.utils.cache.get_cache_key\">\n<span class=\"sig-name descname\"><span class=\"pre\">get_cache_key</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">key_prefix</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.cache.get_cache_key\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Renvoie une clé de cache basée sur le chemin de requête. Cette méthode peut être utilisée dans la phase de requête car elle extrait la liste d’en-têtes à prendre en compte à partir du registre global de chemin et utilise ces en-têtes pour construire une clé de cache à utiliser.</p>\n<p>Si aucune liste d’en-tête n’est stockée, la page doit être reconstruite et cette fonction renvoie donc <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code>.</p>\n</dd></dl>\n\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.utils.cache.learn_cache_key\">\n<span class=\"sig-name descname\"><span class=\"pre\">learn_cache_key</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">response</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">cache_timeout</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">key_prefix</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.cache.learn_cache_key\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Apprend quels en-têtes à prendre en compte pour un certain chemin de requête à partir de l’objet réponse. Elle stocke ces en-têtes dans un registre global de chemins afin que tout accès ultérieur à ce chemin sache les en-têtes à prendre en compte sans devoir construire l’objet réponse lui-même. Les en-têtes sont nommés dans l’en-tête <code class=\"docutils literal notranslate\"><span class=\"pre\">Vary</span></code> de la réponse, mais il s’agit d’éviter de devoir générer la réponse.</p>\n<p>La liste des en-têtes à utiliser pour la génération de la clé de cache est stockée dans le même cache que les pages elles-mêmes. Si le cache rejette certaines vieilles données du cache, cela signifie simplement qu’il faut reconstruire une fois la réponse pour avoir accès à l’en-tête <code class=\"docutils literal notranslate\"><span class=\"pre\">Vary</span></code> et par là à la liste des en-têtes à utiliser pour la clé de cache.</p>\n</dd></dl>\n\n</section>\n<section id=\"module-django.utils.dateparse\">\n<span id=\"django-utils-dateparse\"></span><h2><code class=\"docutils literal notranslate\"><span class=\"pre\">django.utils.dateparse</span></code><a class=\"heading-anchor\" href=\"#module-django.utils.dateparse\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Les fonctions définies dans ce module partagent les propriétés suivantes :</p>\n<ul class=\"simple\">\n<li><p>Elles génèrent une exception <a class=\"reference external\" href=\"https://docs.python.org/3/library/exceptions.html#ValueError\" title=\"(disponible dans Python v3.14)\"><code class=\"xref py py-exc docutils literal notranslate\"><span class=\"pre\">ValueError</span></code></a> si la valeur d’entrée est correctement mise en forme mais qu’elle ne correspond pas à une date ou heure valable.</p></li>\n<li><p>Elles renvoient <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code> si la valeur d’entrée n’est pas correctement mise en forme.</p></li>\n<li><p>Elles acceptent une résolution de valeur d’entrée jusqu’à la picoseconde, mais elles tronquent à la microseconde car c’est la résolution maximale gérée par Python.</p></li>\n</ul>\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.utils.dateparse.parse_date\">\n<span class=\"sig-name descname\"><span class=\"pre\">parse_date</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">value</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.dateparse.parse_date\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Analyse une chaîne et renvoie un objet <a class=\"reference external\" href=\"https://docs.python.org/3/library/datetime.html#datetime.date\" title=\"(disponible dans Python v3.14)\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">datetime.date</span></code></a>.</p>\n</dd></dl>\n\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.utils.dateparse.parse_time\">\n<span class=\"sig-name descname\"><span class=\"pre\">parse_time</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">value</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.dateparse.parse_time\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Analyse une chaîne et renvoie un objet <a class=\"reference external\" href=\"https://docs.python.org/3/library/datetime.html#datetime.time\" title=\"(disponible dans Python v3.14)\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">datetime.time</span></code></a>.</p>\n<p>Les décalages UTC ne sont pas pris en charge ; si <code class=\"docutils literal notranslate\"><span class=\"pre\">value</span></code> en contient un, le résultat sera <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code>.</p>\n</dd></dl>\n\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.utils.dateparse.parse_datetime\">\n<span class=\"sig-name descname\"><span class=\"pre\">parse_datetime</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">value</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.dateparse.parse_datetime\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Analyse une chaîne et renvoie un objet <a class=\"reference external\" href=\"https://docs.python.org/3/library/datetime.html#datetime.datetime\" title=\"(disponible dans Python v3.14)\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">datetime.datetime</span></code></a>.</p>\n<p>Les décalages UTC sont pris en charge ; si <code class=\"docutils literal notranslate\"><span class=\"pre\">value</span></code> en contient un, l’attribut <code class=\"docutils literal notranslate\"><span class=\"pre\">tzinfo</span></code> du résultat sera une instance <a class=\"reference internal\" href=\"#django.utils.timezone.FixedOffset\" title=\"django.utils.timezone.FixedOffset\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">FixedOffset</span></code></a>.</p>\n</dd></dl>\n\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.utils.dateparse.parse_duration\">\n<span class=\"sig-name descname\"><span class=\"pre\">parse_duration</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">value</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.dateparse.parse_duration\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Analyse une chaîne et renvoie un objet <a class=\"reference external\" href=\"https://docs.python.org/3/library/datetime.html#datetime.timedelta\" title=\"(disponible dans Python v3.14)\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">datetime.timedelta</span></code></a>.</p>\n<p>S’attend à recevoir des données au format <code class=\"docutils literal notranslate\"><span class=\"pre\">&quot;JJ</span> <span class=\"pre\">HH:MM:SS.uuuuuu&quot;</span></code> ou tel que défini par ISO 8601 (par ex. <code class=\"docutils literal notranslate\"><span class=\"pre\">P4DT1H15M20S</span></code> ce qui est équivalent à <code class=\"docutils literal notranslate\"><span class=\"pre\">4</span> <span class=\"pre\">1:15:20</span></code>).</p>\n</dd></dl>\n\n</section>\n<section id=\"module-django.utils.decorators\">\n<span id=\"django-utils-decorators\"></span><h2><code class=\"docutils literal notranslate\"><span class=\"pre\">django.utils.decorators</span></code><a class=\"heading-anchor\" href=\"#module-django.utils.decorators\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.utils.decorators.method_decorator\">\n<span class=\"sig-name descname\"><span class=\"pre\">method_decorator</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">decorator</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">name</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">''</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.decorators.method_decorator\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Convertit un décorateur de fonction en un décorateur de méthode. Cette fonction peut être utilisée pour décorer des méthodes ou des classes ; dans ce dernier cas, <code class=\"docutils literal notranslate\"><span class=\"pre\">name</span></code> est le nom de la méthode à décorer et est obligatoire.</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">decorator</span></code> peut aussi être une liste ou un tuple de fonctions. Celles-ci sont décorées dans l’ordre inverse, ce qui fait que l’ordre d’appel est le même que celui dans lequel les fonctions apparaissent dans la liste.</p>\n<p>Voir <a class=\"reference internal\" href=\"/fr/1.11/topics/class-based-views/intro/#id1\"><span class=\"std std-ref\">décoration des vues fondées sur les classes</span></a> pour un exemple d’utilisation.</p>\n</dd></dl>\n\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.utils.decorators.decorator_from_middleware\">\n<span class=\"sig-name descname\"><span class=\"pre\">decorator_from_middleware</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">middleware_class</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.decorators.decorator_from_middleware\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Renvoie un décorateur de vue à partir d’une classe d’intergiciel. Cela permet d’utiliser des fonctionnalités d’intergiciel pour certaines vues seulement. L’intergiciel est créé sans aucun paramètre.</p>\n<p>Il s’attend à des intergiciels compatibles avec l’ancien style de Django jusqu’à 1.9 (en ayant des méthodes comme <code class=\"docutils literal notranslate\"><span class=\"pre\">process_request()</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">process_exception()</span></code> et <code class=\"docutils literal notranslate\"><span class=\"pre\">process_response()</span></code>).</p>\n</dd></dl>\n\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.utils.decorators.decorator_from_middleware_with_args\">\n<span class=\"sig-name descname\"><span class=\"pre\">decorator_from_middleware_with_args</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">middleware_class</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.decorators.decorator_from_middleware_with_args\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Comme <code class=\"docutils literal notranslate\"><span class=\"pre\">decorator_from_middleware</span></code>, mais renvoie une fonction qui accepte des paramètres à transmettre à la classe <code class=\"docutils literal notranslate\"><span class=\"pre\">middleware_class</span></code>. Par exemple, le décorateur <a class=\"reference internal\" href=\"/fr/1.11/topics/cache/#django.views.decorators.cache.cache_page\" title=\"django.views.decorators.cache.cache_page\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">cache_page()</span></code></a> est créé à partir de <code class=\"docutils literal notranslate\"><span class=\"pre\">CacheMiddleware</span></code> comme ceci :</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\">cache_page</span> <span class=\"o\">=</span> <span class=\"n\">decorator_from_middleware_with_args</span><span class=\"p\">(</span><span class=\"n\">CacheMiddleware</span><span class=\"p\">)</span>\n\n<span class=\"nd\">@cache_page</span><span class=\"p\">(</span><span class=\"mi\">3600</span><span class=\"p\">)</span>\n<span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">my_view</span><span class=\"p\">(</span><span class=\"n\">request</span><span class=\"p\">):</span>\n    <span class=\"k\">pass</span>\n</code></pre></div>\n</dd></dl>\n\n</section>\n<section id=\"module-django.utils.encoding\">\n<span id=\"django-utils-encoding\"></span><h2><code class=\"docutils literal notranslate\"><span class=\"pre\">django.utils.encoding</span></code><a class=\"heading-anchor\" href=\"#module-django.utils.encoding\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.utils.encoding.python_2_unicode_compatible\">\n<span class=\"sig-name descname\"><span class=\"pre\">python_2_unicode_compatible</span></span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.encoding.python_2_unicode_compatible\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Un décorateur qui définit les méthodes <code class=\"docutils literal notranslate\"><span class=\"pre\">__unicode__</span></code> et <code class=\"docutils literal notranslate\"><span class=\"pre\">__str__</span></code> avec Python 2. Avec Python 3, il ne fait rien.</p>\n<p>Pour pouvoir prendre en charge à la fois Python 2 et 3 avec une seule base de code, définissez une méthode <code class=\"docutils literal notranslate\"><span class=\"pre\">__str__</span></code> renvoyant du texte (en utilisant <code class=\"docutils literal notranslate\"><span class=\"pre\">six.text_type()</span></code> si du forçage de type doit avoir lieu) et appliquez ce décorateur à la classe.</p>\n</dd></dl>\n\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.utils.encoding.smart_text\">\n<span class=\"sig-name descname\"><span class=\"pre\">smart_text</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">s</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">encoding</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">'utf-8'</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">strings_only</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">False</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">errors</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">'strict'</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.encoding.smart_text\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Renvoie un objet texte représentant <code class=\"docutils literal notranslate\"><span class=\"pre\">s</span></code>, c’est-à-dire de type <code class=\"docutils literal notranslate\"><span class=\"pre\">unicode</span></code> avec Python 2 et de type <code class=\"docutils literal notranslate\"><span class=\"pre\">str</span></code> avec Python 3. Traite les chaînes d’octets en utilisant le codage <code class=\"docutils literal notranslate\"><span class=\"pre\">encoding</span></code>.</p>\n<p>Si <code class=\"docutils literal notranslate\"><span class=\"pre\">strings_only</span></code> est <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>, ne convertit pas certains objets non assimilables à des chaînes.</p>\n</dd></dl>\n\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.utils.encoding.smart_unicode\">\n<span class=\"sig-name descname\"><span class=\"pre\">smart_unicode</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">s</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">encoding</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">'utf-8'</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">strings_only</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">False</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">errors</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">'strict'</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.encoding.smart_unicode\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Nom historique de <a class=\"reference internal\" href=\"#django.utils.encoding.smart_text\" title=\"django.utils.encoding.smart_text\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">smart_text()</span></code></a>. Seulement disponible avec Python 2.</p>\n</dd></dl>\n\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.utils.encoding.is_protected_type\">\n<span class=\"sig-name descname\"><span class=\"pre\">is_protected_type</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">obj</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.encoding.is_protected_type\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Détermine si l’instance d’objet est d’un type protégé.</p>\n<p>Les objets d’un type protégé sont préservés tels quels lorsqu’ils sont transmis à <code class=\"docutils literal notranslate\"><span class=\"pre\">force_text(strings_only=True)</span></code>.</p>\n</dd></dl>\n\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.utils.encoding.force_text\">\n<span class=\"sig-name descname\"><span class=\"pre\">force_text</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">s</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">encoding</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">'utf-8'</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">strings_only</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">False</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">errors</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">'strict'</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.encoding.force_text\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Semblable à <code class=\"docutils literal notranslate\"><span class=\"pre\">smart_text</span></code>, sauf que les instances différées sont évaluées en chaînes, plutôt que de conserver leur état différé.</p>\n<p>Si <code class=\"docutils literal notranslate\"><span class=\"pre\">strings_only</span></code> est <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>, ne convertit pas certains objets non assimilables à des chaînes.</p>\n</dd></dl>\n\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.utils.encoding.force_unicode\">\n<span class=\"sig-name descname\"><span class=\"pre\">force_unicode</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">s</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">encoding</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">'utf-8'</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">strings_only</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">False</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">errors</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">'strict'</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.encoding.force_unicode\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Nom historique de <a class=\"reference internal\" href=\"#django.utils.encoding.force_text\" title=\"django.utils.encoding.force_text\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">force_text()</span></code></a>. Seulement disponible avec Python 2.</p>\n</dd></dl>\n\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.utils.encoding.smart_bytes\">\n<span class=\"sig-name descname\"><span class=\"pre\">smart_bytes</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">s</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">encoding</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">'utf-8'</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">strings_only</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">False</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">errors</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">'strict'</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.encoding.smart_bytes\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Renvoie une version de <code class=\"docutils literal notranslate\"><span class=\"pre\">s</span></code> sous forme de chaîne d’octets, en utilisant le codage indiqué dans <code class=\"docutils literal notranslate\"><span class=\"pre\">encoding</span></code>.</p>\n<p>Si <code class=\"docutils literal notranslate\"><span class=\"pre\">strings_only</span></code> est <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>, ne convertit pas certains objets non assimilables à des chaînes.</p>\n</dd></dl>\n\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.utils.encoding.force_bytes\">\n<span class=\"sig-name descname\"><span class=\"pre\">force_bytes</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">s</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">encoding</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">'utf-8'</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">strings_only</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">False</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">errors</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">'strict'</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.encoding.force_bytes\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Semblable à <code class=\"docutils literal notranslate\"><span class=\"pre\">smart_bytes</span></code>, sauf que les instances différées sont évaluées en chaînes d’octets, plutôt que de conserver leur état différé.</p>\n<p>Si <code class=\"docutils literal notranslate\"><span class=\"pre\">strings_only</span></code> est <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>, ne convertit pas certains objets non assimilables à des chaînes.</p>\n</dd></dl>\n\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.utils.encoding.smart_str\">\n<span class=\"sig-name descname\"><span class=\"pre\">smart_str</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">s</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">encoding</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">'utf-8'</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">strings_only</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">False</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">errors</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">'strict'</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.encoding.smart_str\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Alias de <a class=\"reference internal\" href=\"#django.utils.encoding.smart_bytes\" title=\"django.utils.encoding.smart_bytes\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">smart_bytes()</span></code></a> avec Python 2 et de <a class=\"reference internal\" href=\"#django.utils.encoding.smart_text\" title=\"django.utils.encoding.smart_text\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">smart_text()</span></code></a> avec Python 3. Cette fonction renvoie un type <code class=\"docutils literal notranslate\"><span class=\"pre\">str</span></code> ou une chaîne différée.</p>\n<p>Cela convient par exemple à l’écriture vers <a class=\"reference external\" href=\"https://docs.python.org/3/library/sys.html#sys.stdout\" title=\"(disponible dans Python v3.14)\"><code class=\"xref py py-data docutils literal notranslate\"><span class=\"pre\">sys.stdout</span></code></a> aussi bien pour Python 2 que Python 3.</p>\n</dd></dl>\n\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.utils.encoding.force_str\">\n<span class=\"sig-name descname\"><span class=\"pre\">force_str</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">s</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">encoding</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">'utf-8'</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">strings_only</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">False</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">errors</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">'strict'</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.encoding.force_str\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Alias de <a class=\"reference internal\" href=\"#django.utils.encoding.force_bytes\" title=\"django.utils.encoding.force_bytes\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">force_bytes()</span></code></a> avec Python 2 et de <a class=\"reference internal\" href=\"#django.utils.encoding.force_text\" title=\"django.utils.encoding.force_text\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">force_text()</span></code></a> avec Python 3. Cette fonction renvoie toujours un type <code class=\"docutils literal notranslate\"><span class=\"pre\">str</span></code>.</p>\n</dd></dl>\n\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.utils.encoding.iri_to_uri\">\n<span class=\"sig-name descname\"><span class=\"pre\">iri_to_uri</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">iri</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.encoding.iri_to_uri\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Convertit une portion d’identifiant de ressource internationalisé (IRI) en portion d’URI qui convient pour l’inclusion dans une URL.</p>\n<p>Il s’agit de l’algorithme de la section 3.1 de la <span class=\"target\" id=\"index-11\"></span><a class=\"rfc reference external\" href=\"https://datatracker.ietf.org/doc/html/rfc3987.html#section-3.1\"><strong>RFC 3987 Section 3.1</strong></a>. Cependant, comme nous partons du principe que la valeur d’entrée est déjà soit en UTF-8, soit en unicode, nous pouvons simplifier un peu les choses par rapport à la méthode complète.</p>\n<p>Accepte une IRI sous forme d’octets UTF-8 et renvoie une chaîne d’octets ASCII contenant le résultat encodé.</p>\n</dd></dl>\n\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.utils.encoding.uri_to_iri\">\n<span class=\"sig-name descname\"><span class=\"pre\">uri_to_iri</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">uri</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.encoding.uri_to_iri\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Convertit une URI (Uniform Resource Identifier) en une IRI (Internationalized Resource Identifier).</p>\n<p>Il s’agit d’un algorithme inspiré de la section 3.2 de la <span class=\"target\" id=\"index-12\"></span><a class=\"rfc reference external\" href=\"https://datatracker.ietf.org/doc/html/rfc3987.html#section-3.2\"><strong>RFC 3987 Section 3.2</strong></a>.</p>\n<p>Accepte une URI en octets ASCII et renvoie une chaîne unicode contenant le résultat encodé.</p>\n</dd></dl>\n\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.utils.encoding.filepath_to_uri\">\n<span class=\"sig-name descname\"><span class=\"pre\">filepath_to_uri</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">path</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.encoding.filepath_to_uri\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Convertit un chemin de système de fichiers en une portion d’URI convenable pour son inclusion dans une URL. Le chemin en entrée doit être soit de l’UTF-8, soit de l’unicode.</p>\n<p>Cette méthode code certains caractères qui sont normalement identifiés comme des caractères spéciaux dans les URI. Notez que cette méthode ne code pas le caractère « “ » car c’est un caractère accepté dans les URI. Voir la fonction JavaScript <code class=\"docutils literal notranslate\"><span class=\"pre\">encodeURIComponent()</span></code> pour plus de détails.</p>\n<p>Renvoie une chaîne ASCII contenant le résultat encodé.</p>\n</dd></dl>\n\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.utils.encoding.escape_uri_path\">\n<span class=\"sig-name descname\"><span class=\"pre\">escape_uri_path</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">path</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.encoding.escape_uri_path\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Échappe les caractères non sûrs de la portion de chemin d’un URI (Uniform Resource Identifier).</p>\n</dd></dl>\n\n</section>\n<section id=\"module-django.utils.feedgenerator\">\n<span id=\"django-utils-feedgenerator\"></span><h2><code class=\"docutils literal notranslate\"><span class=\"pre\">django.utils.feedgenerator</span></code><a class=\"heading-anchor\" href=\"#module-django.utils.feedgenerator\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Exemple d’utilisation :</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=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.utils</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">feedgenerator</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">feed</span> <span class=\"o\">=</span> <span class=\"n\">feedgenerator</span><span class=\"o\">.</span><span class=\"n\">Rss201rev2Feed</span><span class=\"p\">(</span>\n<span class=\"gp\">... </span>    <span class=\"n\">title</span><span class=\"o\">=</span><span class=\"s2\">&quot;Poynter E-Media Tidbits&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"n\">link</span><span class=\"o\">=</span><span class=\"s2\">&quot;http://www.poynter.org/column.asp?id=31&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"n\">description</span><span class=\"o\">=</span><span class=\"s2\">&quot;A group Weblog by the sharpest minds in online media/journalism/publishing.&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"n\">language</span><span class=\"o\">=</span><span class=\"s2\">&quot;en&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">feed</span><span class=\"o\">.</span><span class=\"n\">add_item</span><span class=\"p\">(</span>\n<span class=\"gp\">... </span>    <span class=\"n\">title</span><span class=\"o\">=</span><span class=\"s2\">&quot;Hello&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"n\">link</span><span class=\"o\">=</span><span class=\"s2\">&quot;http://www.holovaty.com/test/&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"n\">description</span><span class=\"o\">=</span><span class=\"s2\">&quot;Testing.&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"k\">with</span> <span class=\"nb\">open</span><span class=\"p\">(</span><span class=\"s1\">&#39;test.rss&#39;</span><span class=\"p\">,</span> <span class=\"s1\">&#39;w&#39;</span><span class=\"p\">)</span> <span class=\"k\">as</span> <span class=\"n\">fp</span><span class=\"p\">:</span>\n<span class=\"gp\">... </span>    <span class=\"n\">feed</span><span class=\"o\">.</span><span class=\"n\">write</span><span class=\"p\">(</span><span class=\"n\">fp</span><span class=\"p\">,</span> <span class=\"s1\">&#39;utf-8&#39;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Pour simplifier la sélection d’un générateur, utilisez <code class=\"docutils literal notranslate\"><span class=\"pre\">feedgenerator.DefaultFeed</span></code> qui est actuellement <code class=\"docutils literal notranslate\"><span class=\"pre\">Rss201rev2Feed</span></code>.</p>\n<p>Pour les définitions des différentes versions de RSS, voir <a class=\"reference external\" href=\"https://web.archive.org/web/20110718035220/http://diveintomark.org/archives/2004/02/04/incompatible-rss\">https://web.archive.org/web/20110718035220/http://diveintomark.org/archives/2004/02/04/incompatible-rss</a></p>\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.utils.feedgenerator.get_tag_uri\">\n<span class=\"sig-name descname\"><span class=\"pre\">get_tag_uri</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">url</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">date</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.feedgenerator.get_tag_uri\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Crée un <code class=\"docutils literal notranslate\"><span class=\"pre\">TagURI</span></code>.</p>\n<p>Voir <a class=\"reference external\" href=\"https://web.archive.org/web/20110514113830/http://diveintomark.org/archives/2004/05/28/howto-atom-id\">https://web.archive.org/web/20110514113830/http://diveintomark.org/archives/2004/05/28/howto-atom-id</a></p>\n</dd></dl>\n\n<section id=\"syndicationfeed\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">SyndicationFeed</span></code><a class=\"heading-anchor\" href=\"#syndicationfeed\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.utils.feedgenerator.SyndicationFeed\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">SyndicationFeed</span></span><a class=\"heading-anchor\" href=\"#django.utils.feedgenerator.SyndicationFeed\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Classe de base pour tous les flux de syndication. Les sous-classes doivent implémenter <code class=\"docutils literal notranslate\"><span class=\"pre\">write()</span></code>.</p>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.utils.feedgenerator.SyndicationFeed.__init__\">\n<span class=\"sig-name descname\"><span class=\"pre\">__init__</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">title</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">link</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">description</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">language</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">author_email</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">author_name</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">author_link</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">subtitle</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">categories</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">feed_url</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">feed_copyright</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">feed_guid</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">ttl</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">kwargs</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.feedgenerator.SyndicationFeed.__init__\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Initialise le flux avec le dictionnaire de métadonnées indiqué, qui s’applique au flux entier.</p>\n<p>Tout paramètre nommé supplémentaire passé à <code class=\"docutils literal notranslate\"><span class=\"pre\">__init__</span></code> est stocké dans <code class=\"docutils literal notranslate\"><span class=\"pre\">self.feed</span></code>.</p>\n<p>Tous les paramètres doivent être des objets Unicode, à l’exception de <code class=\"docutils literal notranslate\"><span class=\"pre\">categories</span></code>, qui doit être une liste d’objets Unicode.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.utils.feedgenerator.SyndicationFeed.add_item\">\n<span class=\"sig-name descname\"><span class=\"pre\">add_item</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">title</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">link</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">description</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">author_email</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">author_name</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">author_link</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">pubdate</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">comments</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">unique_id</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">enclosure</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">categories</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">()</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">item_copyright</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">ttl</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">updateddate</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">enclosures</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">kwargs</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.feedgenerator.SyndicationFeed.add_item\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Ajoute un élément au flux. Tous les paramètres sont censés être des objets Python <code class=\"docutils literal notranslate\"><span class=\"pre\">unicode</span></code>, sauf <code class=\"docutils literal notranslate\"><span class=\"pre\">pubdate</span></code> et <code class=\"docutils literal notranslate\"><span class=\"pre\">updateddate</span></code> qui doivent être des objets <code class=\"docutils literal notranslate\"><span class=\"pre\">datetime.datetime</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">enclosure</span></code> qui est une instance <code class=\"docutils literal notranslate\"><span class=\"pre\">Enclosure</span></code>, et``enclosures`` qui est une liste d’instances de la classe <code class=\"docutils literal notranslate\"><span class=\"pre\">Enclosure</span></code>.</p>\n<aside class=\"version-note version-deprecated\" data-version=\"1.9\">\n<p class=\"version-note-title\">Deprecated since Django 1.9</p><p><span class=\"versionmodified deprecated\">Obsolète depuis la version 1.9: </span>Le paramètre nommé <code class=\"docutils literal notranslate\"><span class=\"pre\">enclosure</span></code> est obsolète et remplacé par le nouveau paramètre nommé <code class=\"docutils literal notranslate\"><span class=\"pre\">enclosures</span></code> qui accepte une liste d’objets <code class=\"docutils literal notranslate\"><span class=\"pre\">Enclosure</span></code>.</p>\n</aside>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.utils.feedgenerator.SyndicationFeed.num_items\">\n<span class=\"sig-name descname\"><span class=\"pre\">num_items</span></span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.feedgenerator.SyndicationFeed.num_items\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.utils.feedgenerator.SyndicationFeed.root_attributes\">\n<span class=\"sig-name descname\"><span class=\"pre\">root_attributes</span></span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.feedgenerator.SyndicationFeed.root_attributes\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Renvoie des attributs supplémentaires à ajouter à l’élément racine (c’est-à-dire le flux ou canal). Appelé depuis <code class=\"docutils literal notranslate\"><span class=\"pre\">write()</span></code>.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.utils.feedgenerator.SyndicationFeed.add_root_elements\">\n<span class=\"sig-name descname\"><span class=\"pre\">add_root_elements</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">handler</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.feedgenerator.SyndicationFeed.add_root_elements\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Ajoute des éléments à l’élément racine (c’est-à-dire le flux ou canal). Appelé depuis <code class=\"docutils literal notranslate\"><span class=\"pre\">write()</span></code>.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.utils.feedgenerator.SyndicationFeed.item_attributes\">\n<span class=\"sig-name descname\"><span class=\"pre\">item_attributes</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">item</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.feedgenerator.SyndicationFeed.item_attributes\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Renvoie des attributs supplémentaires à placer dans chaque élément du flux.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.utils.feedgenerator.SyndicationFeed.add_item_elements\">\n<span class=\"sig-name descname\"><span class=\"pre\">add_item_elements</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">handler</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">item</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.feedgenerator.SyndicationFeed.add_item_elements\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Ajoute des éléments pour chaque élément du flux.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.utils.feedgenerator.SyndicationFeed.write\">\n<span class=\"sig-name descname\"><span class=\"pre\">write</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">outfile</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">encoding</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.feedgenerator.SyndicationFeed.write\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Exporte le flux dans le codage indiqué vers <code class=\"docutils literal notranslate\"><span class=\"pre\">outfile</span></code> qui est un objet de type fichier. Les sous-classes sont censées surcharger cette méthode.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.utils.feedgenerator.SyndicationFeed.writeString\">\n<span class=\"sig-name descname\"><span class=\"pre\">writeString</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">encoding</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.feedgenerator.SyndicationFeed.writeString\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Renvoie le flux dans le codage indiqué sous forme de chaîne.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.utils.feedgenerator.SyndicationFeed.latest_post_date\">\n<span class=\"sig-name descname\"><span class=\"pre\">latest_post_date</span></span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.feedgenerator.SyndicationFeed.latest_post_date\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Renvoie la dernière date <code class=\"docutils literal notranslate\"><span class=\"pre\">pubdate</span></code> ou <code class=\"docutils literal notranslate\"><span class=\"pre\">updateddate</span></code> parmi tous les éléments du flux. Si aucun de ces attributs n’est trouvé sur aucun élément, la date/heure UTC actuelle est renvoyée.</p>\n<aside class=\"version-note version-changed\" data-version=\"1.11\">\n<p class=\"version-note-title\">Changed in Django 1.11</p><p>Dans les versions précédentes, il renvoyait la date/heure courante sans aucune information de fuseau horaire.</p>\n</aside>\n</dd></dl>\n\n</dd></dl>\n\n</section>\n<section id=\"enclosure\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">Enclosure</span></code><a class=\"heading-anchor\" href=\"#enclosure\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.utils.feedgenerator.Enclosure\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">Enclosure</span></span><a class=\"heading-anchor\" href=\"#django.utils.feedgenerator.Enclosure\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Représente une annexe RSS.</p>\n</dd></dl>\n\n</section>\n<section id=\"rssfeed\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">RssFeed</span></code><a class=\"heading-anchor\" href=\"#rssfeed\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.utils.feedgenerator.RssFeed\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">RssFeed</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">SyndicationFeed</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.feedgenerator.RssFeed\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n</section>\n<section id=\"rss201rev2feed\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">Rss201rev2Feed</span></code><a class=\"heading-anchor\" href=\"#rss201rev2feed\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.utils.feedgenerator.Rss201rev2Feed\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">Rss201rev2Feed</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">RssFeed</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.feedgenerator.Rss201rev2Feed\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Spécification : <a class=\"reference external\" href=\"https://cyber.harvard.edu/rss/rss.html\">https://cyber.harvard.edu/rss/rss.html</a></p>\n</dd></dl>\n\n</section>\n<section id=\"rssuserland091feed\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">RssUserland091Feed</span></code><a class=\"heading-anchor\" href=\"#rssuserland091feed\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.utils.feedgenerator.RssUserland091Feed\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">RssUserland091Feed</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">RssFeed</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.feedgenerator.RssUserland091Feed\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Spécification : <a class=\"reference external\" href=\"http://backend.userland.com/rss091\">http://backend.userland.com/rss091</a></p>\n</dd></dl>\n\n</section>\n<section id=\"atom1feed\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">Atom1Feed</span></code><a class=\"heading-anchor\" href=\"#atom1feed\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.utils.feedgenerator.Atom1Feed\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">Atom1Feed</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">SyndicationFeed</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.feedgenerator.Atom1Feed\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Spécification : <a class=\"reference external\" href=\"https://tools.ietf.org/html/rfc4287\">https://tools.ietf.org/html/rfc4287</a></p>\n</dd></dl>\n\n</section>\n</section>\n<section id=\"module-django.utils.functional\">\n<span id=\"django-utils-functional\"></span><h2><code class=\"docutils literal notranslate\"><span class=\"pre\">django.utils.functional</span></code><a class=\"heading-anchor\" href=\"#module-django.utils.functional\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.utils.functional.cached_property\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">cached_property</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">object</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">name</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.functional.cached_property\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Le décorateur <code class=\"docutils literal notranslate\"><span class=\"pre\">&#64;cached_property</span></code> met en cache le résultat d’une méthode ayant un seul paramètre <code class=\"docutils literal notranslate\"><span class=\"pre\">self</span></code> sous forme de propriété. Le résultat en cache persiste aussi longtemps que l’instance, ce qui fait que si l’instance est conservée et que la fonction est appelée une nouvelle fois plus tard, le résultat en cache est renvoyé.</p>\n<p>Considérons un cas typique où une vue a besoin d’appeler la méthode d’un modèle pour effectuer un certain calcul avant de placer cette instance de modèle dans le contexte passé au gabarit, et celui-ci a aussi besoin d’appeler la méthode une nouvelle fois :</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=\"c1\"># the model</span>\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">Person</span><span class=\"p\">(</span><span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">Model</span><span class=\"p\">):</span>\n\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">friends</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">):</span>\n        <span class=\"c1\"># expensive computation</span>\n        <span class=\"o\">...</span>\n        <span class=\"k\">return</span> <span class=\"n\">friends</span>\n\n<span class=\"c1\"># in the view:</span>\n<span class=\"k\">if</span> <span class=\"n\">person</span><span class=\"o\">.</span><span class=\"n\">friends</span><span class=\"p\">():</span>\n    <span class=\"o\">...</span>\n</code></pre></div>\n<p>Et dans le gabarit, vous auriez :</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</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=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">for</span> <span class=\"nv\">friend</span> <span class=\"k\">in</span> <span class=\"nv\">person.friends</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">friends()</span></code> sera ici appelée deux fois. Puisque les instances <code class=\"docutils literal notranslate\"><span class=\"pre\">person</span></code> dans la vue et dans le gabarit représentent la même instance, décorer la méthode <code class=\"docutils literal notranslate\"><span class=\"pre\">friends()</span></code> avec <code class=\"docutils literal notranslate\"><span class=\"pre\">&#64;cached_property</span></code> permet d’éviter cela</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.utils.functional</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">cached_property</span>\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">Person</span><span class=\"p\">(</span><span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">Model</span><span class=\"p\">):</span>\n\n    <span class=\"nd\">@cached_property</span>\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">friends</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">):</span>\n        <span class=\"o\">...</span>\n</code></pre></div>\n<p>Notez que la méthode étant maintenant devenue une propriété, le code Python doit l’invoquer de manière adéquate :</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=\"c1\"># in the view:</span>\n<span class=\"k\">if</span> <span class=\"n\">person</span><span class=\"o\">.</span><span class=\"n\">friends</span><span class=\"p\">:</span>\n    <span class=\"o\">...</span>\n</code></pre></div>\n<p>La valeur en cache peut être traitée comme n’importe quel autre attribut normal de l’instance :</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=\"c1\"># clear it, requiring re-computation next time it&#39;s called</span>\n<span class=\"k\">del</span> <span class=\"n\">person</span><span class=\"o\">.</span><span class=\"n\">friends</span> <span class=\"c1\"># or delattr(person, &quot;friends&quot;)</span>\n\n<span class=\"c1\"># set a value manually, that will persist on the instance until cleared</span>\n<span class=\"n\">person</span><span class=\"o\">.</span><span class=\"n\">friends</span> <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"s2\">&quot;Huckleberry Finn&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;Tom Sawyer&quot;</span><span class=\"p\">]</span>\n</code></pre></div>\n<p>En plus d’offrir des avantages potentiels en terme de performance, <code class=\"docutils literal notranslate\"><span class=\"pre\">&#64;cached_property</span></code> peut garantir que la valeur d’un attribut ne change pas de manière inattendue au cours de la vie d’une instance. Cela pourrait se produire avec une méthode dont le calcul est basé sur <code class=\"docutils literal notranslate\"><span class=\"pre\">datetime.now()</span></code>, ou simplement dans le cas où la base de données est modifiée par une autre processus dans le bref intervalle entre des appels successifs d’une méthode de la même instance.</p>\n<p>Vous pouvez utiliser le paramètre <code class=\"docutils literal notranslate\"><span class=\"pre\">name</span></code> pour créer des propriétés en cache pour d’autres méthodes. Par exemple, si vous avez une méthode coûteuse <code class=\"docutils literal notranslate\"><span class=\"pre\">get_friends()</span></code> et que vous vouliez permettre de l’appeler aussi sans récupérer la valeur en cache, vous pourriez écrire :</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\">friends</span> <span class=\"o\">=</span> <span class=\"n\">cached_property</span><span class=\"p\">(</span><span class=\"n\">get_friends</span><span class=\"p\">,</span> <span class=\"n\">name</span><span class=\"o\">=</span><span class=\"s1\">&#39;friends&#39;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Alors que <code class=\"docutils literal notranslate\"><span class=\"pre\">person.get_friends()</span></code> recalcule les amis à chaque appel, la valeur de la propriété en cache persiste tant que vous ne la supprimez pas, comme expliqué ci-dessus :</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\">x</span> <span class=\"o\">=</span> <span class=\"n\">person</span><span class=\"o\">.</span><span class=\"n\">friends</span>         <span class=\"c1\"># calls first time</span>\n<span class=\"n\">y</span> <span class=\"o\">=</span> <span class=\"n\">person</span><span class=\"o\">.</span><span class=\"n\">get_friends</span><span class=\"p\">()</span>   <span class=\"c1\"># calls again</span>\n<span class=\"n\">z</span> <span class=\"o\">=</span> <span class=\"n\">person</span><span class=\"o\">.</span><span class=\"n\">friends</span>         <span class=\"c1\"># does not call</span>\n<span class=\"n\">x</span> <span class=\"ow\">is</span> <span class=\"n\">z</span>                     <span class=\"c1\"># is True</span>\n</code></pre></div>\n</dd></dl>\n\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.utils.functional.allow_lazy\">\n<span class=\"sig-name descname\"><span class=\"pre\">allow_lazy</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">func</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">*</span></span><span class=\"n\"><span class=\"pre\">resultclasses</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.functional.allow_lazy\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><aside class=\"version-note version-deprecated\" data-version=\"1.10\">\n<p class=\"version-note-title\">Deprecated since Django 1.10</p><p><span class=\"versionmodified deprecated\">Obsolète depuis la version 1.10.</span></p>\n</aside>\n<p>Fonctionne comme <a class=\"reference internal\" href=\"#django.utils.functional.keep_lazy\" title=\"django.utils.functional.keep_lazy\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">keep_lazy()</span></code></a> sauf qu’elle ne peut pas être utilisée comme décorateur.</p>\n</dd></dl>\n\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.utils.functional.keep_lazy\">\n<span class=\"sig-name descname\"><span class=\"pre\">keep_lazy</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">func</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">*</span></span><span class=\"n\"><span class=\"pre\">resultclasses</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.functional.keep_lazy\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><aside class=\"version-note version-added\" data-version=\"1.10\">\n<p class=\"version-note-title\">New in Django 1.10</p></aside>\n<p>Django offre de nombreuses fonctions utilitaires (particulièrement dans <code class=\"docutils literal notranslate\"><span class=\"pre\">django.utils</span></code>) qui acceptent une chaîne comme premier paramètre et font quelque chose avec cette chaîne. Ces fonctions sont utilisées aussi bien par des filtres de gabarit que de façon directe dans du code Python.</p>\n<p>Si vous écrivez vous-même des fonctions semblables et que vous devez gérer des traductions, vous serez confronté au problème du traitement du premier paramètre quand il s’agit d’un objet de traduction différée. Il n’est pas souhaitable de le convertir immédiatement en chaîne de caractères, car il se peut que cette fonction soit utilisée en dehors d’une vue (et donc que le réglage de langue du fil d’exécution en cours ne soit pas le bon).</p>\n<p>Pour des cas comme celui-là, utilisez le décorateur <code class=\"docutils literal notranslate\"><span class=\"pre\">django.utils.functional.keep_lazy()</span></code>. Il modifie la fonction afin que <em>si</em> elle est appelée avec en paramètre une traduction différée, l’évaluation de la fonction est reportée jusqu’au moment où il devient vraiment nécessaire de produire une chaîne.</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.utils</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">six</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.utils.functional</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">keep_lazy</span><span class=\"p\">,</span> <span class=\"n\">keep_lazy_text</span>\n\n<span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">fancy_utility_function</span><span class=\"p\">(</span><span class=\"n\">s</span><span class=\"p\">,</span> <span class=\"o\">...</span><span class=\"p\">):</span>\n    <span class=\"c1\"># Do some conversion on string &#39;s&#39;</span>\n    <span class=\"o\">...</span>\n<span class=\"n\">fancy_utility_function</span> <span class=\"o\">=</span> <span class=\"n\">keep_lazy</span><span class=\"p\">(</span><span class=\"n\">six</span><span class=\"o\">.</span><span class=\"n\">text_type</span><span class=\"p\">)(</span><span class=\"n\">fancy_utility_function</span><span class=\"p\">)</span>\n\n<span class=\"c1\"># Or more succinctly:</span>\n<span class=\"nd\">@keep_lazy</span><span class=\"p\">(</span><span class=\"n\">six</span><span class=\"o\">.</span><span class=\"n\">text_type</span><span class=\"p\">)</span>\n<span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">fancy_utility_function</span><span class=\"p\">(</span><span class=\"n\">s</span><span class=\"p\">,</span> <span class=\"o\">...</span><span class=\"p\">):</span>\n    <span class=\"o\">...</span>\n</code></pre></div>\n<p>Le décorateur <code class=\"docutils literal notranslate\"><span class=\"pre\">keep_lazy()</span></code> accepte quelques paramètres supplémentaires (<code class=\"docutils literal notranslate\"><span class=\"pre\">*args</span></code>) indiquant le ou les types renvoyés par la fonction originale. Un cas d’utilisation fréquent est d’avoir des fonctions qui renvoient du texte. Pour celles-ci, il suffit de passer le type <code class=\"docutils literal notranslate\"><span class=\"pre\">six.text_type</span></code> à <code class=\"docutils literal notranslate\"><span class=\"pre\">keep_lazy</span></code> (ou même plus simplement, utilisez le décorateur <a class=\"reference internal\" href=\"#django.utils.functional.keep_lazy_text\" title=\"django.utils.functional.keep_lazy_text\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">keep_lazy_text()</span></code></a> présenté à la section suivante).</p>\n<p>L’emploi de ce décorateur permet d’écrire une fonction et de compter sur la présence d’une vraie chaîne en entrée, puis d’ajouter au final la prise en charge des objets de traduction différée.</p>\n</dd></dl>\n\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.utils.functional.keep_lazy_text\">\n<span class=\"sig-name descname\"><span class=\"pre\">keep_lazy_text</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">func</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.functional.keep_lazy_text\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><aside class=\"version-note version-added\" data-version=\"1.10\">\n<p class=\"version-note-title\">New in Django 1.10</p></aside>\n<p>Un raccourci pour <code class=\"docutils literal notranslate\"><span class=\"pre\">keep_lazy(six.text_type)(func)</span></code>.</p>\n<p>Si vous avez une fonction qui renvoie du texte et que vous souhaitez pouvoir accepter des paramètres dont l’évaluation est différée, utilisez simplement ce décorateur :</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.utils</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">six</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.utils.functional</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">keep_lazy</span><span class=\"p\">,</span> <span class=\"n\">keep_lazy_text</span>\n\n<span class=\"c1\"># Our previous example was:</span>\n<span class=\"nd\">@keep_lazy</span><span class=\"p\">(</span><span class=\"n\">six</span><span class=\"o\">.</span><span class=\"n\">text_type</span><span class=\"p\">)</span>\n<span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">fancy_utility_function</span><span class=\"p\">(</span><span class=\"n\">s</span><span class=\"p\">,</span> <span class=\"o\">...</span><span class=\"p\">):</span>\n    <span class=\"o\">...</span>\n\n<span class=\"c1\"># Which can be rewritten as:</span>\n<span class=\"nd\">@keep_lazy_text</span>\n<span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">fancy_utility_function</span><span class=\"p\">(</span><span class=\"n\">s</span><span class=\"p\">,</span> <span class=\"o\">...</span><span class=\"p\">):</span>\n    <span class=\"o\">...</span>\n</code></pre></div>\n</dd></dl>\n\n</section>\n<section id=\"module-django.utils.html\">\n<span id=\"django-utils-html\"></span><h2><code class=\"docutils literal notranslate\"><span class=\"pre\">django.utils.html</span></code><a class=\"heading-anchor\" href=\"#module-django.utils.html\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>En principe, le code HTML doit être construit avec des gabarits Django pour profiter de leur mécanisme d’échappement automatique, en faisant appel aux utilitaires de <a class=\"reference internal\" href=\"#module-django.utils.safestring\" title=\"django.utils.safestring: Functions and classes for working with strings that can be displayed safely without further escaping in HTML.\"><code class=\"xref py py-mod docutils literal notranslate\"><span class=\"pre\">django.utils.safestring</span></code></a> en cas de besoin. Ce module fournit quelques utilitaires supplémentaires de bas niveau pour l’échappement de code HTML.</p>\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.utils.html.escape\">\n<span class=\"sig-name descname\"><span class=\"pre\">escape</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">text</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.html.escape\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Renvoie le texte donné en codant les esperluettes, les guillemets et les chevrons de manière adaptée au HTML. Le texte en entrée est d’abord passé dans la fonction <a class=\"reference internal\" href=\"#django.utils.encoding.force_text\" title=\"django.utils.encoding.force_text\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">force_text()</span></code></a> et le résultat final est marqué comme sûr avec <a class=\"reference internal\" href=\"#django.utils.safestring.mark_safe\" title=\"django.utils.safestring.mark_safe\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">mark_safe()</span></code></a>.</p>\n</dd></dl>\n\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.utils.html.conditional_escape\">\n<span class=\"sig-name descname\"><span class=\"pre\">conditional_escape</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">text</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.html.conditional_escape\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Semblable à <code class=\"docutils literal notranslate\"><span class=\"pre\">escape()</span></code>, sauf qu’elle n’opère pas sur les chaînes déjà échappées afin d’éviter un double échappement.</p>\n</dd></dl>\n\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.utils.html.format_html\">\n<span class=\"sig-name descname\"><span class=\"pre\">format_html</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">format_string</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">*</span></span><span class=\"n\"><span class=\"pre\">args</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">kwargs</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.html.format_html\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Cette fonction ressemble à <a class=\"reference external\" href=\"https://docs.python.org/3/library/stdtypes.html#str.format\" title=\"(disponible dans Python v3.14)\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">str.format()</span></code></a>, sauf qu’elle est particulièrement appropriée pour la construction de fragments HTML. Tous les paramètres (<code class=\"docutils literal notranslate\"><span class=\"pre\">args</span></code>/<code class=\"docutils literal notranslate\"><span class=\"pre\">kwargs</span></code>) passent par <a class=\"reference internal\" href=\"#django.utils.html.conditional_escape\" title=\"django.utils.html.conditional_escape\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">conditional_escape()</span></code></a> avant d’être transmis à <code class=\"docutils literal notranslate\"><span class=\"pre\">str.format()</span></code>.</p>\n<p>Dans les cas où il s’agit de produire des petits fragments HTML, cette fonction doit être préférée à l’interpolation de chaîne directe avec <code class=\"docutils literal notranslate\"><span class=\"pre\">%</span></code> ou <code class=\"docutils literal notranslate\"><span class=\"pre\">str.format()</span></code>, car elle applique l’échappement à tous ses paramètres, tout comme le fait le système de gabarit par défaut.</p>\n<p>Donc au lieu d’écrire :</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\">mark_safe</span><span class=\"p\">(</span><span class=\"s2\">&quot;</span><span class=\"si\">%s</span><span class=\"s2\"> &lt;b&gt;</span><span class=\"si\">%s</span><span class=\"s2\">&lt;/b&gt; </span><span class=\"si\">%s</span><span class=\"s2\">&quot;</span> <span class=\"o\">%</span> <span class=\"p\">(</span>\n    <span class=\"n\">some_html</span><span class=\"p\">,</span>\n    <span class=\"n\">escape</span><span class=\"p\">(</span><span class=\"n\">some_text</span><span class=\"p\">),</span>\n    <span class=\"n\">escape</span><span class=\"p\">(</span><span class=\"n\">some_other_text</span><span class=\"p\">),</span>\n<span class=\"p\">))</span>\n</code></pre></div>\n<p>Il est préférable d’écrire :</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\">format_html</span><span class=\"p\">(</span><span class=\"s2\">&quot;</span><span class=\"si\">{}</span><span class=\"s2\"> &lt;b&gt;</span><span class=\"si\">{}</span><span class=\"s2\">&lt;/b&gt; </span><span class=\"si\">{}</span><span class=\"s2\">&quot;</span><span class=\"p\">,</span>\n    <span class=\"n\">mark_safe</span><span class=\"p\">(</span><span class=\"n\">some_html</span><span class=\"p\">),</span>\n    <span class=\"n\">some_text</span><span class=\"p\">,</span>\n    <span class=\"n\">some_other_text</span><span class=\"p\">,</span>\n<span class=\"p\">)</span>\n</code></pre></div>\n<p>Ceci présente l’avantage de ne pas devoir appliquer soi-même <a class=\"reference internal\" href=\"#django.utils.html.escape\" title=\"django.utils.html.escape\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">escape()</span></code></a> à chacun des paramètres et de risquer une anomalie ou une vulnérabilité XSS si on en oublie un.</p>\n<p>Notez que bien que cette fonction utilise <code class=\"docutils literal notranslate\"><span class=\"pre\">str.format()</span></code> pour effectuer l’interpolation, certaines des options de format fournies par <code class=\"docutils literal notranslate\"><span class=\"pre\">str.format()</span></code> (par ex. les formats de nombre) ne fonctionnent pas, car tous les paramètres sont passés par la moulinette <a class=\"reference internal\" href=\"#django.utils.html.conditional_escape\" title=\"django.utils.html.conditional_escape\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">conditional_escape()</span></code></a> qui appelle <a class=\"reference internal\" href=\"#django.utils.encoding.force_text\" title=\"django.utils.encoding.force_text\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">force_text()</span></code></a> sur les valeurs reçues.</p>\n</dd></dl>\n\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.utils.html.format_html_join\">\n<span class=\"sig-name descname\"><span class=\"pre\">format_html_join</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">sep</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">format_string</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">args_generator</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.html.format_html_join\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Une adaptateur de <a class=\"reference internal\" href=\"#django.utils.html.format_html\" title=\"django.utils.html.format_html\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">format_html()</span></code></a> conçu pour le cas courant d’un groupe de paramètres devant être mis en forme avec la même chaîne de format, puis combinés avec <code class=\"docutils literal notranslate\"><span class=\"pre\">sep</span></code>. <code class=\"docutils literal notranslate\"><span class=\"pre\">sep</span></code> passe lui-même aussi par <a class=\"reference internal\" href=\"#django.utils.html.conditional_escape\" title=\"django.utils.html.conditional_escape\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">conditional_escape()</span></code></a>.</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">args_generator</span></code> doit être un itérateur renvoyant la liste de paramètres <code class=\"docutils literal notranslate\"><span class=\"pre\">args</span></code> qui seront transmis à <a class=\"reference internal\" href=\"#django.utils.html.format_html\" title=\"django.utils.html.format_html\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">format_html()</span></code></a>. 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\">format_html_join</span><span class=\"p\">(</span>\n    <span class=\"s1\">&#39;</span><span class=\"se\">\\n</span><span class=\"s1\">&#39;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;&lt;li&gt;</span><span class=\"si\">{}</span><span class=\"s2\"> </span><span class=\"si\">{}</span><span class=\"s2\">&lt;/li&gt;&quot;</span><span class=\"p\">,</span>\n    <span class=\"p\">((</span><span class=\"n\">u</span><span class=\"o\">.</span><span class=\"n\">first_name</span><span class=\"p\">,</span> <span class=\"n\">u</span><span class=\"o\">.</span><span class=\"n\">last_name</span><span class=\"p\">)</span> <span class=\"k\">for</span> <span class=\"n\">u</span> <span class=\"ow\">in</span> <span class=\"n\">users</span><span class=\"p\">)</span>\n<span class=\"p\">)</span>\n</code></pre></div>\n</dd></dl>\n\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.utils.html.strip_tags\">\n<span class=\"sig-name descname\"><span class=\"pre\">strip_tags</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">value</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.html.strip_tags\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Tente de supprimer de la chaîne tout ce qui ressemble à une balise HTML, c’est-à-dire tout ce qui est contenu à l’intérieur de <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;&gt;</span></code>.</p>\n<p>Il n’y a absolument AUCUNE garantie que la chaîne résultante sera vraiment sûre du point de vue HTML. Il ne faut donc JAMAIS marquer comme sûre le résultat d’un appel à <code class=\"docutils literal notranslate\"><span class=\"pre\">strip_tag</span></code> sans l’avoir d’abord échappé, par exemple avec <a class=\"reference internal\" href=\"#django.utils.html.escape\" title=\"django.utils.html.escape\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">escape()</span></code></a>.</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=\"n\">strip_tags</span><span class=\"p\">(</span><span class=\"n\">value</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Si <code class=\"docutils literal notranslate\"><span class=\"pre\">value</span></code> vaut <code class=\"docutils literal notranslate\"><span class=\"pre\">&quot;&lt;b&gt;Joël&lt;/b&gt;</span> <span class=\"pre\">&lt;button&gt;est&lt;/button&gt;</span> <span class=\"pre\">une</span> <span class=\"pre\">&lt;span&gt;limace&lt;/span&gt;&quot;</span></code>, la valeur renvoyée sera <code class=\"docutils literal notranslate\"><span class=\"pre\">&quot;Joël</span> <span class=\"pre\">est</span> <span class=\"pre\">une</span> <span class=\"pre\">limace&quot;</span></code>.</p>\n<p>Si vous recherchez une solution plus robuste, regardez du côté de la bibliothèque Python <a class=\"reference external\" href=\"https://pypi.python.org/pypi/bleach\">bleach</a>.</p>\n</dd></dl>\n\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.utils.html.html_safe\">\n<span class=\"sig-name descname\"><span class=\"pre\">html_safe</span></span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.html.html_safe\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>La méthode <code class=\"docutils literal notranslate\"><span class=\"pre\">__html__()</span></code> d’une classe aide les gabarits non Django à détecter les classes dont le résultat ne demande pas d’échappement HTML.</p>\n<p>Ce décorateur définit la méthode <code class=\"docutils literal notranslate\"><span class=\"pre\">__html__()</span></code> pour la classe décorée en enveloppant <code class=\"docutils literal notranslate\"><span class=\"pre\">__unicode__()</span></code> (Python 2) ou <code class=\"docutils literal notranslate\"><span class=\"pre\">__str__()</span></code> (Python 3) dans <a class=\"reference internal\" href=\"#django.utils.safestring.mark_safe\" title=\"django.utils.safestring.mark_safe\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">mark_safe()</span></code></a>. Assurez-vous que la méthode <code class=\"docutils literal notranslate\"><span class=\"pre\">__unicode__()</span></code> ou <code class=\"docutils literal notranslate\"><span class=\"pre\">__str__()</span></code> renvoie effectivement du texte qui ne demande pas d’échappement HTML.</p>\n</dd></dl>\n\n</section>\n<section id=\"module-django.utils.http\">\n<span id=\"django-utils-http\"></span><h2><code class=\"docutils literal notranslate\"><span class=\"pre\">django.utils.http</span></code><a class=\"heading-anchor\" href=\"#module-django.utils.http\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.utils.http.urlquote\">\n<span class=\"sig-name descname\"><span class=\"pre\">urlquote</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">url</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">safe</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">'/'</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.http.urlquote\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Une version de la fonction Python <code class=\"docutils literal notranslate\"><span class=\"pre\">urllib.quote()</span></code> pouvant agir sur des chaînes Unicode. L’URL est d’abord codée en UTF-8 avant d’être traitée. La chaîne renvoyée peut être utilisée sans crainte comme partie d’un paramètre à un appel <code class=\"docutils literal notranslate\"><span class=\"pre\">iri_to_uri()</span></code> sans se préoccuper de double-échappement. Utilise l’exécution différée.</p>\n</dd></dl>\n\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.utils.http.urlquote_plus\">\n<span class=\"sig-name descname\"><span class=\"pre\">urlquote_plus</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">url</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">safe</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">''</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.http.urlquote_plus\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Une version de la fonction Python <code class=\"docutils literal notranslate\"><span class=\"pre\">urllib.quote_plus()</span></code> pouvant agir sur des chaînes Unicode. L’URL est d’abord codée en UTF-8 avant d’être traitée. La chaîne renvoyée peut être utilisée sans crainte comme partie d’un paramètre à un appel <code class=\"docutils literal notranslate\"><span class=\"pre\">iri_to_uri()</span></code> sans se préoccuper de double-échappement. Utilise l’exécution différée.</p>\n</dd></dl>\n\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.utils.http.urlencode\">\n<span class=\"sig-name descname\"><span class=\"pre\">urlencode</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">query</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">doseq</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">0</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.http.urlencode\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Une version de la fonction Python <code class=\"docutils literal notranslate\"><span class=\"pre\">urllib.urlencode()</span></code> pouvant agir sur des chaînes Unicode. Les paramètres sont d’abord transformés en chaînes codées en UTF-8, puis codées de manière attendue.</p>\n</dd></dl>\n\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.utils.http.cookie_date\">\n<span class=\"sig-name descname\"><span class=\"pre\">cookie_date</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">epoch_seconds</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.http.cookie_date\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Met en forme la date pour garantir la compatibilité avec le standard de cookie Netscape.</p>\n<p>Accepte un nombre à virgule exprimé en secondes depuis le temps Unix initial en UTC, de manière semblable à ce que produit <code class=\"docutils literal notranslate\"><span class=\"pre\">time.time()</span></code>. Si le paramètre est <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code>, c’est la date actuelle qui est renvoyée.</p>\n<p>Produit une chaîne au format <code class=\"docutils literal notranslate\"><span class=\"pre\">Wdy,</span> <span class=\"pre\">DD-Mon-YYYY</span> <span class=\"pre\">HH:MM:SS</span> <span class=\"pre\">GMT</span></code>.</p>\n</dd></dl>\n\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.utils.http.http_date\">\n<span class=\"sig-name descname\"><span class=\"pre\">http_date</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">epoch_seconds</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.http.http_date\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Met en forme la date/heure en respectant le format de date <span class=\"target\" id=\"index-13\"></span><a class=\"rfc reference external\" href=\"https://datatracker.ietf.org/doc/html/rfc1123.html\"><strong>RFC 1123</strong></a> tel que défini par la <span class=\"target\" id=\"index-14\"></span><a class=\"rfc reference external\" href=\"https://datatracker.ietf.org/doc/html/rfc7231.html#section-7.1.1.1\"><strong>RFC 7231 Section 7.1.1.1</strong></a> du standard HTTP.</p>\n<p>Accepte un nombre à virgule exprimé en secondes depuis le temps Unix initial en UTC, de manière semblable à ce que produit <code class=\"docutils literal notranslate\"><span class=\"pre\">time.time()</span></code>. Si le paramètre est <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code>, c’est la date actuelle qui est renvoyée.</p>\n<p>Produit une chaîne au format <code class=\"docutils literal notranslate\"><span class=\"pre\">Wdy,</span> <span class=\"pre\">DD</span> <span class=\"pre\">Mon</span> <span class=\"pre\">YYYY</span> <span class=\"pre\">HH:MM:SS</span> <span class=\"pre\">GMT</span></code>.</p>\n</dd></dl>\n\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.utils.http.base36_to_int\">\n<span class=\"sig-name descname\"><span class=\"pre\">base36_to_int</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">s</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.http.base36_to_int\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Convertit une chaîne en base 36 en un nombre entier. Avec Python 2, le résultat est toujours de type <code class=\"docutils literal notranslate\"><span class=\"pre\">int</span></code>, jamais un <code class=\"docutils literal notranslate\"><span class=\"pre\">long</span></code>.</p>\n</dd></dl>\n\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.utils.http.int_to_base36\">\n<span class=\"sig-name descname\"><span class=\"pre\">int_to_base36</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">i</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.http.int_to_base36\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Convertit un nombre entier positif en une chaîne en base 36. Avec Python 2, <code class=\"docutils literal notranslate\"><span class=\"pre\">i</span></code> doit être plus petit que <a class=\"reference external\" href=\"https://docs.python.org/2/library/sys.html#sys.maxint\">sys.maxint</a>.</p>\n</dd></dl>\n\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.utils.http.urlsafe_base64_encode\">\n<span class=\"sig-name descname\"><span class=\"pre\">urlsafe_base64_encode</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">s</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.http.urlsafe_base64_encode\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Code une chaîne d’octets en base64 pour être utilisée dans les URL, en enlevant d’éventuels signes « égal » finaux.</p>\n</dd></dl>\n\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.utils.http.urlsafe_base64_decode\">\n<span class=\"sig-name descname\"><span class=\"pre\">urlsafe_base64_decode</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">s</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.http.urlsafe_base64_decode\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Décode une chaîne codée en base64, ajoutant d’éventuels signes « égal » finaux qui pourraient avoir été enlevés.</p>\n</dd></dl>\n\n</section>\n<section id=\"module-django.utils.module_loading\">\n<span id=\"django-utils-module-loading\"></span><h2><code class=\"docutils literal notranslate\"><span class=\"pre\">django.utils.module_loading</span></code><a class=\"heading-anchor\" href=\"#module-django.utils.module_loading\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Fonctions pour manipuler les modules Python.</p>\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.utils.module_loading.import_string\">\n<span class=\"sig-name descname\"><span class=\"pre\">import_string</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">dotted_path</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.module_loading.import_string\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Importe un chemin pointé de module et renvoie la classe ou l’attribut désigné par le dernier nom du chemin. Génère <code class=\"docutils literal notranslate\"><span class=\"pre\">ImportError</span></code> si l’importation échoue. 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.utils.module_loading</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">import_string</span>\n<span class=\"n\">ValidationError</span> <span class=\"o\">=</span> <span class=\"n\">import_string</span><span class=\"p\">(</span><span class=\"s1\">&#39;django.core.exceptions.ValidationError&#39;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>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=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.core.exceptions</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">ValidationError</span>\n</code></pre></div>\n</dd></dl>\n\n</section>\n<section id=\"module-django.utils.safestring\">\n<span id=\"django-utils-safestring\"></span><h2><code class=\"docutils literal notranslate\"><span class=\"pre\">django.utils.safestring</span></code><a class=\"heading-anchor\" href=\"#module-django.utils.safestring\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Fonctions et classes pour travailler avec des « chaînes sûres » : des chaînes qui peuvent être affichées sans crainte sans devoir subir d’échappement HTML. Quand une chaîne est marquée comme « sûre » (safe), cela signifie que le producteur de la chaîne a déjà transformé en entités appropriées les caractères qui ne doivent pas être interprétés par le moteur HTML (par ex. « &lt; »).</p>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.utils.safestring.SafeBytes\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">SafeBytes</span></span><a class=\"heading-anchor\" href=\"#django.utils.safestring.SafeBytes\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Une sous-classe de <code class=\"docutils literal notranslate\"><span class=\"pre\">bytes</span></code> pour des chaînes ayant été explicitement marquées comme « sûres » (plus besoin d’échappement) à des fins d’affichage HTML.</p>\n</dd></dl>\n\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.utils.safestring.SafeString\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">SafeString</span></span><a class=\"heading-anchor\" href=\"#django.utils.safestring.SafeString\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Une sous-classe de <code class=\"docutils literal notranslate\"><span class=\"pre\">str</span></code> pour des chaînes ayant été explicitement marquées comme « sûres » (plus besoin d’échappement) à des fins d’affichage HTML. Cela correspond à <a class=\"reference internal\" href=\"#django.utils.safestring.SafeBytes\" title=\"django.utils.safestring.SafeBytes\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">SafeBytes</span></code></a> avec Python 2 et <a class=\"reference internal\" href=\"#django.utils.safestring.SafeText\" title=\"django.utils.safestring.SafeText\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">SafeText</span></code></a> avec Python 3.</p>\n</dd></dl>\n\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.utils.safestring.SafeText\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">SafeText</span></span><a class=\"heading-anchor\" href=\"#django.utils.safestring.SafeText\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Une sous-classe de <code class=\"docutils literal notranslate\"><span class=\"pre\">str</span></code> (avec Python 3) ou de <code class=\"docutils literal notranslate\"><span class=\"pre\">unicode</span></code> (avec Python 2) pour des chaînes ayant été explicitement marquées comme « sûres » (plus besoin d’échappement) à des fins d’affichage HTML.</p>\n</dd></dl>\n\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.utils.safestring.SafeUnicode\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">SafeUnicode</span></span><a class=\"heading-anchor\" href=\"#django.utils.safestring.SafeUnicode\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Nom historique de <a class=\"reference internal\" href=\"#django.utils.safestring.SafeText\" title=\"django.utils.safestring.SafeText\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">SafeText</span></code></a>. Seulement disponible avec Python 2.</p>\n</dd></dl>\n\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.utils.safestring.mark_safe\">\n<span class=\"sig-name descname\"><span class=\"pre\">mark_safe</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">s</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.safestring.mark_safe\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Marque explicitement une chaîne comme sûre en vue de son affichage (HTML). L’objet renvoyé peut être utilisé partout où une chaîne ou un objet unicode peut être utilisé.</p>\n<p>Cette fonction peut être utilisée plusieurs fois sur la même chaîne.</p>\n<p>Peut aussi être utilisé comme décorateur.</p>\n<p>Pour la construction de fragments de HTML, il est généralement préférable d’utiliser plutôt <a class=\"reference internal\" href=\"#django.utils.html.format_html\" title=\"django.utils.html.format_html\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">django.utils.html.format_html()</span></code></a>.</p>\n<p>Une chaîne marquée comme sûre redevient non sûre quand elle est modifiée. 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=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">mystr</span> <span class=\"o\">=</span> <span class=\"s1\">&#39;&lt;b&gt;Hello World&lt;/b&gt;   &#39;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">mystr</span> <span class=\"o\">=</span> <span class=\"n\">mark_safe</span><span class=\"p\">(</span><span class=\"n\">mystr</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">type</span><span class=\"p\">(</span><span class=\"n\">mystr</span><span class=\"p\">)</span>\n<span class=\"go\">&lt;class &#39;django.utils.safestring.SafeBytes&#39;&gt;</span>\n\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">mystr</span> <span class=\"o\">=</span> <span class=\"n\">mystr</span><span class=\"o\">.</span><span class=\"n\">strip</span><span class=\"p\">()</span>  <span class=\"c1\"># removing whitespace</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">type</span><span class=\"p\">(</span><span class=\"n\">mystr</span><span class=\"p\">)</span>\n<span class=\"go\">&lt;type &#39;str&#39;&gt;</span>\n</code></pre></div>\n<aside class=\"version-note version-changed\" data-version=\"1.11\">\n<p class=\"version-note-title\">Changed in Django 1.11</p><p>La possibilité d’utilisation comme décorateur a été ajoutée.</p>\n</aside>\n</dd></dl>\n\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.utils.safestring.mark_for_escaping\">\n<span class=\"sig-name descname\"><span class=\"pre\">mark_for_escaping</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">s</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.safestring.mark_for_escaping\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><aside class=\"version-note version-deprecated\" data-version=\"1.10\">\n<p class=\"version-note-title\">Deprecated since Django 1.10</p><p><span class=\"versionmodified deprecated\">Obsolète depuis la version 1.10.</span></p>\n</aside>\n<p>Marque explicitement une chaîne comme devant être échappée en vue de son affichage HTML. Ceci n’a pas d’effet sur les sous-classes de <code class=\"docutils literal notranslate\"><span class=\"pre\">SafeData</span></code>.</p>\n<p>Cette fonction peut être utilisée plusieurs fois sur la même chaîne (au final, l’échappement n’est appliqué qu’une seule fois).</p>\n</dd></dl>\n\n</section>\n<section id=\"module-django.utils.text\">\n<span id=\"django-utils-text\"></span><h2><code class=\"docutils literal notranslate\"><span class=\"pre\">django.utils.text</span></code><a class=\"heading-anchor\" href=\"#module-django.utils.text\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.utils.text.format_lazy\">\n<span class=\"sig-name descname\"><span class=\"pre\">format_lazy</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">format_string</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">*</span></span><span class=\"n\"><span class=\"pre\">args</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">kwargs</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.text.format_lazy\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><aside class=\"version-note version-added\" data-version=\"1.11\">\n<p class=\"version-note-title\">New in Django 1.11</p></aside>\n<p>Une version de <a class=\"reference external\" href=\"https://docs.python.org/3/library/stdtypes.html#str.format\" title=\"(disponible dans Python v3.14)\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">str.format()</span></code></a> pour les cas où <code class=\"docutils literal notranslate\"><span class=\"pre\">format_string</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">args</span></code> ou <code class=\"docutils literal notranslate\"><span class=\"pre\">kwargs</span></code> contiennent des objets différés. Le premier paramètre est la chaîne à mettre en forme. 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.utils.text</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">format_lazy</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.utils.translation</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">pgettext_lazy</span>\n\n<span class=\"n\">urlpatterns</span> <span class=\"o\">=</span> <span class=\"p\">[</span>\n    <span class=\"n\">url</span><span class=\"p\">(</span><span class=\"n\">format_lazy</span><span class=\"p\">(</span><span class=\"sa\">r</span><span class=\"s1\">&#39;</span><span class=\"si\">{person}</span><span class=\"s1\">/(?P&lt;pk&gt;\\d+)/$&#39;</span><span class=\"p\">,</span> <span class=\"n\">person</span><span class=\"o\">=</span><span class=\"n\">pgettext_lazy</span><span class=\"p\">(</span><span class=\"s1\">&#39;URL&#39;</span><span class=\"p\">,</span> <span class=\"s1\">&#39;person&#39;</span><span class=\"p\">)),</span>\n        <span class=\"n\">PersonDetailView</span><span class=\"o\">.</span><span class=\"n\">as_view</span><span class=\"p\">()),</span>\n<span class=\"p\">]</span>\n</code></pre></div>\n<p>Cet exemple permet aux traducteurs de traduire une partie de l’URL. Si « person » est traduit en « persona », l’expression régulière va correspondre à <code class=\"docutils literal notranslate\"><span class=\"pre\">persona/(?P&lt;pk&gt;\\d+)/$</span></code>, par ex. <code class=\"docutils literal notranslate\"><span class=\"pre\">persona/5/</span></code>.</p>\n</dd></dl>\n\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.utils.text.slugify\">\n<span class=\"sig-name descname\"><span class=\"pre\">slugify</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">allow_unicode</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">False</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.text.slugify\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Convertit en ASCII si <code class=\"docutils literal notranslate\"><span class=\"pre\">allow_unicode</span></code> vaut <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code> (par défaut). Convertit les espaces en tirets. Enlève les caractères qui ne sont ni alphanumériques, ni soulignements, ni tirets. Convertit en minuscules. Les espaces en début et fin de chaîne sont aussi enlevés.</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=\"n\">slugify</span><span class=\"p\">(</span><span class=\"n\">value</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Si <code class=\"docutils literal notranslate\"><span class=\"pre\">value</span></code> contient <code class=\"docutils literal notranslate\"><span class=\"pre\">&quot;Joël</span> <span class=\"pre\">est</span> <span class=\"pre\">une</span> <span class=\"pre\">limace&quot;</span></code>, le résultat sera <code class=\"docutils literal notranslate\"><span class=\"pre\">joel-est-une-limace</span></code>.</p>\n<p>Vous pouvez définir le paramètre <code class=\"docutils literal notranslate\"><span class=\"pre\">allow_unicode</span></code> à <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>, si vous souhaitez permettre les caractères Unicode :</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\">slugify</span><span class=\"p\">(</span><span class=\"n\">value</span><span class=\"p\">,</span> <span class=\"n\">allow_unicode</span><span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Si <code class=\"docutils literal notranslate\"><span class=\"pre\">value</span></code> contient <code class=\"docutils literal notranslate\"><span class=\"pre\">&quot;你好</span> <span class=\"pre\">World&quot;</span></code>, le résultat sera <code class=\"docutils literal notranslate\"><span class=\"pre\">&quot;你好-world&quot;</span></code>.</p>\n</dd></dl>\n\n</section>\n<section id=\"module-django.utils.timezone\">\n<span id=\"django-utils-timezone\"></span><span id=\"time-zone-selection-functions\"></span><h2><code class=\"docutils literal notranslate\"><span class=\"pre\">django.utils.timezone</span></code><a class=\"heading-anchor\" href=\"#module-django.utils.timezone\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py data\">\n<dt class=\"sig sig-object py\" id=\"django.utils.timezone.utc\">\n<span class=\"sig-name descname\"><span class=\"pre\">utc</span></span><a class=\"heading-anchor\" href=\"#django.utils.timezone.utc\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Instance <a class=\"reference external\" href=\"https://docs.python.org/3/library/datetime.html#datetime.tzinfo\" title=\"(disponible dans Python v3.14)\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">tzinfo</span></code></a> qui représente le temps UTC.</p>\n</dd></dl>\n\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.utils.timezone.FixedOffset\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">FixedOffset</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">offset</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">name</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.timezone.FixedOffset\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Une sous-classe de <a class=\"reference external\" href=\"https://docs.python.org/3/library/datetime.html#datetime.tzinfo\" title=\"(disponible dans Python v3.14)\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">tzinfo</span></code></a> simulant un décalage fixe par rapport au temps UTC. <code class=\"docutils literal notranslate\"><span class=\"pre\">offset</span></code> est un nombre entier de minutes à l’est d’UTC.</p>\n</dd></dl>\n\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.utils.timezone.get_fixed_timezone\">\n<span class=\"sig-name descname\"><span class=\"pre\">get_fixed_timezone</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">offset</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.timezone.get_fixed_timezone\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Renvoie une instance <a class=\"reference external\" href=\"https://docs.python.org/3/library/datetime.html#datetime.tzinfo\" title=\"(disponible dans Python v3.14)\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">tzinfo</span></code></a> représentant un fuseau horaire avec un décalage UTC fixe.</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">offset</span></code> est une différence de temps <a class=\"reference external\" href=\"https://docs.python.org/3/library/datetime.html#datetime.timedelta\" title=\"(disponible dans Python v3.14)\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">datetime.timedelta</span></code></a> ou un nombre entier en minutes. Utilisez des valeurs positives pour les fuseaux horaires à l’est d’UTC et des valeurs négatives à l’ouest d’UTC.</p>\n</dd></dl>\n\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.utils.timezone.get_default_timezone\">\n<span class=\"sig-name descname\"><span class=\"pre\">get_default_timezone</span></span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.timezone.get_default_timezone\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Renvoie une instance <a class=\"reference external\" href=\"https://docs.python.org/3/library/datetime.html#datetime.tzinfo\" title=\"(disponible dans Python v3.14)\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">tzinfo</span></code></a> qui représente le <a class=\"reference internal\" href=\"/fr/1.11/topics/i18n/timezones/#default-current-time-zone\"><span class=\"std std-ref\">fuseau horaire par défaut</span></a>.</p>\n</dd></dl>\n\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.utils.timezone.get_default_timezone_name\">\n<span class=\"sig-name descname\"><span class=\"pre\">get_default_timezone_name</span></span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.timezone.get_default_timezone_name\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Renvoie le nom du <a class=\"reference internal\" href=\"/fr/1.11/topics/i18n/timezones/#default-current-time-zone\"><span class=\"std std-ref\">fuseau horaire par défaut</span></a>.</p>\n</dd></dl>\n\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.utils.timezone.get_current_timezone\">\n<span class=\"sig-name descname\"><span class=\"pre\">get_current_timezone</span></span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.timezone.get_current_timezone\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Renvoie une instance <a class=\"reference external\" href=\"https://docs.python.org/3/library/datetime.html#datetime.tzinfo\" title=\"(disponible dans Python v3.14)\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">tzinfo</span></code></a> qui représente le <a class=\"reference internal\" href=\"/fr/1.11/topics/i18n/timezones/#default-current-time-zone\"><span class=\"std std-ref\">fuseau horaire en cours</span></a>.</p>\n</dd></dl>\n\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.utils.timezone.get_current_timezone_name\">\n<span class=\"sig-name descname\"><span class=\"pre\">get_current_timezone_name</span></span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.timezone.get_current_timezone_name\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Renvoie le nom du <a class=\"reference internal\" href=\"/fr/1.11/topics/i18n/timezones/#default-current-time-zone\"><span class=\"std std-ref\">fuseau horaire en cours</span></a>.</p>\n</dd></dl>\n\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.utils.timezone.activate\">\n<span class=\"sig-name descname\"><span class=\"pre\">activate</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">timezone</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.timezone.activate\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Définit le <a class=\"reference internal\" href=\"/fr/1.11/topics/i18n/timezones/#default-current-time-zone\"><span class=\"std std-ref\">fuseau horaire actif</span></a>. Le paramètre <code class=\"docutils literal notranslate\"><span class=\"pre\">timezone</span></code> doit être une instance d’une sous-classe de <a class=\"reference external\" href=\"https://docs.python.org/3/library/datetime.html#datetime.tzinfo\" title=\"(disponible dans Python v3.14)\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">tzinfo</span></code></a> ou un nom de fuseau horaire.</p>\n</dd></dl>\n\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.utils.timezone.deactivate\">\n<span class=\"sig-name descname\"><span class=\"pre\">deactivate</span></span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.timezone.deactivate\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Désactive le <a class=\"reference internal\" href=\"/fr/1.11/topics/i18n/timezones/#default-current-time-zone\"><span class=\"std std-ref\">fuseau horaire actuel</span></a>.</p>\n</dd></dl>\n\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.utils.timezone.override\">\n<span class=\"sig-name descname\"><span class=\"pre\">override</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">timezone</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.timezone.override\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Gestionnaire de contexte Python qui définit le <a class=\"reference internal\" href=\"/fr/1.11/topics/i18n/timezones/#default-current-time-zone\"><span class=\"std std-ref\">fuseau horaire actif</span></a> lorsqu’il entre en action avec <a class=\"reference internal\" href=\"#django.utils.timezone.activate\" title=\"django.utils.timezone.activate\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">activate()</span></code></a>, puis restaure le fuseau horaire précédemment actif en quittant. Si le paramètre <code class=\"docutils literal notranslate\"><span class=\"pre\">timezone</span></code> vaut <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code>, le <a class=\"reference internal\" href=\"/fr/1.11/topics/i18n/timezones/#default-current-time-zone\"><span class=\"std std-ref\">fuseau horaire actif</span></a> est alors désactivé à l’entrée du gestionnaire avec <a class=\"reference internal\" href=\"#django.utils.timezone.deactivate\" title=\"django.utils.timezone.deactivate\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">deactivate()</span></code></a>.</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">override</span></code> est aussi utilisable comme décorateur de fonction.</p>\n</dd></dl>\n\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.utils.timezone.localtime\">\n<span class=\"sig-name descname\"><span class=\"pre\">localtime</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">value</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">timezone</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.timezone.localtime\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Convertit un objet <a class=\"reference external\" href=\"https://docs.python.org/3/library/datetime.html#datetime.datetime\" title=\"(disponible dans Python v3.14)\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">datetime</span></code></a> conscient vers un fuseau horaire différent, par défaut le <a class=\"reference internal\" href=\"/fr/1.11/topics/i18n/timezones/#default-current-time-zone\"><span class=\"std std-ref\">fuseau horaire actif</span></a>.</p>\n<p>Lorsque <code class=\"docutils literal notranslate\"><span class=\"pre\">value</span></code> est omise, la valeur par défaut est <a class=\"reference internal\" href=\"#django.utils.timezone.now\" title=\"django.utils.timezone.now\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">now()</span></code></a>.</p>\n<p>Cette fonction ne fonctionne pas avec des objets date/heure naïfs ; utilisez alors plutôt <a class=\"reference internal\" href=\"#django.utils.timezone.make_aware\" title=\"django.utils.timezone.make_aware\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">make_aware()</span></code></a>.</p>\n<aside class=\"version-note version-changed\" data-version=\"1.11\">\n<p class=\"version-note-title\">Changed in Django 1.11</p><p>Dans les versions précédentes, <code class=\"docutils literal notranslate\"><span class=\"pre\">value</span></code> était un paramètre obligatoire.</p>\n</aside>\n</dd></dl>\n\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.utils.timezone.localdate\">\n<span class=\"sig-name descname\"><span class=\"pre\">localdate</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">value</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">timezone</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.timezone.localdate\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><aside class=\"version-note version-added\" data-version=\"1.11\">\n<p class=\"version-note-title\">New in Django 1.11</p></aside>\n<p>Utilise <a class=\"reference internal\" href=\"#django.utils.timezone.localtime\" title=\"django.utils.timezone.localtime\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">localtime()</span></code></a> pour convertir un objet <a class=\"reference external\" href=\"https://docs.python.org/3/library/datetime.html#datetime.datetime\" title=\"(disponible dans Python v3.14)\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">datetime</span></code></a> conscient en une <a class=\"reference external\" href=\"https://docs.python.org/3/library/datetime.html#datetime.datetime.date\" title=\"(disponible dans Python v3.14)\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">date()</span></code></a> dans un fuseau horaire différent, par défaut le <a class=\"reference internal\" href=\"/fr/1.11/topics/i18n/timezones/#default-current-time-zone\"><span class=\"std std-ref\">fuseau horaire actif</span></a>.</p>\n<p>Lorsque <code class=\"docutils literal notranslate\"><span class=\"pre\">value</span></code> est omise, la valeur par défaut est <a class=\"reference internal\" href=\"#django.utils.timezone.now\" title=\"django.utils.timezone.now\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">now()</span></code></a>.</p>\n<p>Cette fonction ne fonctionne pas avec des objets date/heure naïfs.</p>\n</dd></dl>\n\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.utils.timezone.now\">\n<span class=\"sig-name descname\"><span class=\"pre\">now</span></span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.timezone.now\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Renvoie un objet <a class=\"reference external\" href=\"https://docs.python.org/3/library/datetime.html#datetime.datetime\" title=\"(disponible dans Python v3.14)\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">datetime</span></code></a> représentant le moment actuel dans le temps (« maintenant »). La valeur précisément renvoyée dépend de la valeur de <a class=\"reference internal\" href=\"/fr/1.11/ref/settings/#std-setting-USE_TZ\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">USE_TZ</span></code></a>:</p>\n<ul class=\"simple\">\n<li><p>Si <a class=\"reference internal\" href=\"/fr/1.11/ref/settings/#std-setting-USE_TZ\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">USE_TZ</span></code></a> est <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code>, il s’agira d’une date/heure <a class=\"reference internal\" href=\"/fr/1.11/topics/i18n/timezones/#naive-vs-aware-datetimes\"><span class=\"std std-ref\">naïve</span></a> (c’est-à-dire une date/heure sans fuseau horaire associé) représentant le temps actuel dans le fuseau horaire local du système.</p></li>\n<li><p>Si <a class=\"reference internal\" href=\"/fr/1.11/ref/settings/#std-setting-USE_TZ\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">USE_TZ</span></code></a> est <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>, il s’agira d’une date/heure <a class=\"reference internal\" href=\"/fr/1.11/topics/i18n/timezones/#naive-vs-aware-datetimes\"><span class=\"std std-ref\">consciente</span></a> représentant le temps actuel en UTC. Notez que <a class=\"reference internal\" href=\"#django.utils.timezone.now\" title=\"django.utils.timezone.now\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">now()</span></code></a> renvoie toujours le temps UTC quelle que soit la valeur de <a class=\"reference internal\" href=\"/fr/1.11/ref/settings/#std-setting-TIME_ZONE\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">TIME_ZONE</span></code></a>; vous pouvez utiliser <a class=\"reference internal\" href=\"#django.utils.timezone.localtime\" title=\"django.utils.timezone.localtime\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">localtime()</span></code></a> pour convertir vers une date/heure dans le fuseau horaire actif.</p></li>\n</ul>\n</dd></dl>\n\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.utils.timezone.is_aware\">\n<span class=\"sig-name descname\"><span class=\"pre\">is_aware</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">value</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.timezone.is_aware\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Renvoie <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> si <code class=\"docutils literal notranslate\"><span class=\"pre\">value</span></code> est consciente, <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code> si elle est naïve. Cette fonction présuppose que <code class=\"docutils literal notranslate\"><span class=\"pre\">value</span></code> est un objet <a class=\"reference external\" href=\"https://docs.python.org/3/library/datetime.html#datetime.datetime\" title=\"(disponible dans Python v3.14)\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">datetime</span></code></a>.</p>\n</dd></dl>\n\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.utils.timezone.is_naive\">\n<span class=\"sig-name descname\"><span class=\"pre\">is_naive</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">value</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.timezone.is_naive\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Renvoie <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> si <code class=\"docutils literal notranslate\"><span class=\"pre\">value</span></code> est naïve, <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code> si elle est consciente. Cette fonction présuppose que <code class=\"docutils literal notranslate\"><span class=\"pre\">value</span></code> est un objet <a class=\"reference external\" href=\"https://docs.python.org/3/library/datetime.html#datetime.datetime\" title=\"(disponible dans Python v3.14)\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">datetime</span></code></a>.</p>\n</dd></dl>\n\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.utils.timezone.make_aware\">\n<span class=\"sig-name descname\"><span class=\"pre\">make_aware</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">value</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">timezone</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">is_dst</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.timezone.make_aware\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Renvoie un objet <a class=\"reference external\" href=\"https://docs.python.org/3/library/datetime.html#datetime.datetime\" title=\"(disponible dans Python v3.14)\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">datetime</span></code></a> conscient représentant le même moment dans le temps que <code class=\"docutils literal notranslate\"><span class=\"pre\">value</span></code> dans le fuseau <code class=\"docutils literal notranslate\"><span class=\"pre\">timezone</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">value</span></code> étant un objet <a class=\"reference external\" href=\"https://docs.python.org/3/library/datetime.html#datetime.datetime\" title=\"(disponible dans Python v3.14)\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">datetime</span></code></a> naïf. Si <code class=\"docutils literal notranslate\"><span class=\"pre\">timezone</span></code> est défini à <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code>, il prend le <a class=\"reference internal\" href=\"/fr/1.11/topics/i18n/timezones/#default-current-time-zone\"><span class=\"std std-ref\">fuseau horaire actuel</span></a> comme valeur par défaut.</p>\n<p>L’exception <code class=\"docutils literal notranslate\"><span class=\"pre\">pytz.AmbiguousTimeError</span></code> est générée quand on essaie de rendre <code class=\"docutils literal notranslate\"><span class=\"pre\">value</span></code> consciente pendant une transition d’heure d’été/hiver et quand la même heure survient deux fois (passage heure d’été à hiver). En définissant <code class=\"docutils literal notranslate\"><span class=\"pre\">is_dst</span></code> à <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> ou <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code>, l’exception est évitée en choisissant si l’heure est celle qui précède ou celle qui suit la transition, respectivement.</p>\n<p>L’exception <code class=\"docutils literal notranslate\"><span class=\"pre\">pytz.NonExistentTimeError</span></code> est générée quand on essaie de rendre <code class=\"docutils literal notranslate\"><span class=\"pre\">value</span></code> consciente pendant une transition d’heure d’été/hiver et quand l’heure concernée ne survient jamais (passage heure d’hiver à été). En définissant <code class=\"docutils literal notranslate\"><span class=\"pre\">is_dst</span></code> à <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> ou <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code>, l’exception est évitée en décalant l’heure de 1 heure en arrière ou en avant, respectivement. Par exemple, <code class=\"docutils literal notranslate\"><span class=\"pre\">is_dst=True</span></code> change une heure impossible de 2:30 à 1:30 et <code class=\"docutils literal notranslate\"><span class=\"pre\">is_dst=False</span></code> change la même heure à 3:30.</p>\n</dd></dl>\n\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.utils.timezone.make_naive\">\n<span class=\"sig-name descname\"><span class=\"pre\">make_naive</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">value</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">timezone</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.timezone.make_naive\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Renvoie un objet <a class=\"reference external\" href=\"https://docs.python.org/3/library/datetime.html#datetime.datetime\" title=\"(disponible dans Python v3.14)\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">datetime</span></code></a> naïf représentant le même moment dans le temps que <code class=\"docutils literal notranslate\"><span class=\"pre\">value</span></code> dans le fuseau <code class=\"docutils literal notranslate\"><span class=\"pre\">timezone</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">value</span></code> étant un objet <a class=\"reference external\" href=\"https://docs.python.org/3/library/datetime.html#datetime.datetime\" title=\"(disponible dans Python v3.14)\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">datetime</span></code></a> conscient. Si <code class=\"docutils literal notranslate\"><span class=\"pre\">timezone</span></code> est défini à <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code>, il prend le <a class=\"reference internal\" href=\"/fr/1.11/topics/i18n/timezones/#default-current-time-zone\"><span class=\"std std-ref\">fuseau horaire actuel</span></a> comme valeur par défaut.</p>\n</dd></dl>\n\n</section>\n<section id=\"module-django.utils.translation\">\n<span id=\"django-utils-translation\"></span><h2><code class=\"docutils literal notranslate\"><span class=\"pre\">django.utils.translation</span></code><a class=\"heading-anchor\" href=\"#module-django.utils.translation\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Pour une discussion complète sur l’utilisation de ce qui suit, consultez la <a class=\"reference internal\" href=\"/fr/1.11/topics/i18n/translation/\"><span class=\"doc\">documentation sur la traduction</span></a>.</p>\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.utils.translation.gettext\">\n<span class=\"sig-name descname\"><span class=\"pre\">gettext</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">message</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.translation.gettext\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Traduit <code class=\"docutils literal notranslate\"><span class=\"pre\">message</span></code> et renvoie le résultat dans une chaîne d’octets UTF-8</p>\n</dd></dl>\n\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.utils.translation.ugettext\">\n<span class=\"sig-name descname\"><span class=\"pre\">ugettext</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">message</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.translation.ugettext\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Traduit <code class=\"docutils literal notranslate\"><span class=\"pre\">message</span></code> et renvoie le résultat dans une chaîne unicode</p>\n</dd></dl>\n\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.utils.translation.pgettext\">\n<span class=\"sig-name descname\"><span class=\"pre\">pgettext</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">context</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">message</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.translation.pgettext\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Traduit <code class=\"docutils literal notranslate\"><span class=\"pre\">message</span></code> selon <code class=\"docutils literal notranslate\"><span class=\"pre\">context</span></code> et renvoie le résultat dans une chaîne unicode.</p>\n<p>Pour plus d’informations, voir <a class=\"reference internal\" href=\"/fr/1.11/topics/i18n/translation/#contextual-markers\"><span class=\"std std-ref\">Marqueurs contextuels</span></a>.</p>\n</dd></dl>\n\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.utils.translation.gettext_lazy\">\n<span class=\"sig-name descname\"><span class=\"pre\">gettext_lazy</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">message</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.translation.gettext_lazy\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.utils.translation.ugettext_lazy\">\n<span class=\"sig-name descname\"><span class=\"pre\">ugettext_lazy</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">message</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.translation.ugettext_lazy\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.utils.translation.pgettext_lazy\">\n<span class=\"sig-name descname\"><span class=\"pre\">pgettext_lazy</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">context</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">message</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.translation.pgettext_lazy\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Même comportement que les versions non différées ci-dessus, mais en utilisant une exécution différée.</p>\n<p>Voir <a class=\"reference internal\" href=\"/fr/1.11/topics/i18n/translation/#lazy-translations\"><span class=\"std std-ref\">la documentation sur les traductions différées</span></a>.</p>\n</dd></dl>\n\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.utils.translation.gettext_noop\">\n<span class=\"sig-name descname\"><span class=\"pre\">gettext_noop</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">message</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.translation.gettext_noop\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.utils.translation.ugettext_noop\">\n<span class=\"sig-name descname\"><span class=\"pre\">ugettext_noop</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">message</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.translation.ugettext_noop\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Marque les chaînes en vue de leur traduction mais ne les traduit pas sur le moment. Cela peut être utile pour stocker des chaînes qui doivent rester dans la langue de base (parce qu’elles pourraient être utilisées de manière externe) dans des variables globales et que ces chaînes seront traduites plus tard.</p>\n</dd></dl>\n\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.utils.translation.ngettext\">\n<span class=\"sig-name descname\"><span class=\"pre\">ngettext</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">singular</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">plural</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">number</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.translation.ngettext\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Traduit <code class=\"docutils literal notranslate\"><span class=\"pre\">singular</span></code> et <code class=\"docutils literal notranslate\"><span class=\"pre\">plural</span></code> et renvoie la chaîne appropriée en fonction de <code class=\"docutils literal notranslate\"><span class=\"pre\">number</span></code> dans une chaîne d’octets UTF-8.</p>\n</dd></dl>\n\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.utils.translation.ungettext\">\n<span class=\"sig-name descname\"><span class=\"pre\">ungettext</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">singular</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">plural</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">number</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.translation.ungettext\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Traduit <code class=\"docutils literal notranslate\"><span class=\"pre\">singular</span></code> et <code class=\"docutils literal notranslate\"><span class=\"pre\">plural</span></code> et renvoie la chaîne appropriée en fonction de <code class=\"docutils literal notranslate\"><span class=\"pre\">number</span></code> dans une chaîne unicode.</p>\n</dd></dl>\n\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.utils.translation.npgettext\">\n<span class=\"sig-name descname\"><span class=\"pre\">npgettext</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">context</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">singular</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">plural</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">number</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.translation.npgettext\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Traduit <code class=\"docutils literal notranslate\"><span class=\"pre\">singulier</span></code> et <code class=\"docutils literal notranslate\"><span class=\"pre\">pluriel</span></code> et renvoie la chaîne appropriée en fonction de <code class=\"docutils literal notranslate\"><span class=\"pre\">nombre</span></code> et de <code class=\"docutils literal notranslate\"><span class=\"pre\">context</span></code> dans une chaîne unicode.</p>\n</dd></dl>\n\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.utils.translation.ngettext_lazy\">\n<span class=\"sig-name descname\"><span class=\"pre\">ngettext_lazy</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">singular</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">plural</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">number</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.translation.ngettext_lazy\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.utils.translation.ungettext_lazy\">\n<span class=\"sig-name descname\"><span class=\"pre\">ungettext_lazy</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">singular</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">plural</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">number</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.translation.ungettext_lazy\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.utils.translation.npgettext_lazy\">\n<span class=\"sig-name descname\"><span class=\"pre\">npgettext_lazy</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">context</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">singular</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">plural</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">number</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.translation.npgettext_lazy\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Même comportement que les versions non différées ci-dessus, mais en utilisant une exécution différée.</p>\n<p>Voir <a class=\"reference internal\" href=\"/fr/1.11/topics/i18n/translation/#lazy-translations\"><span class=\"std std-ref\">la documentation sur les traductions différées</span></a>.</p>\n</dd></dl>\n\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.utils.translation.string_concat\">\n<span class=\"sig-name descname\"><span class=\"pre\">string_concat</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">*</span></span><span class=\"n\"><span class=\"pre\">strings</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.translation.string_concat\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><aside class=\"version-note version-deprecated\" data-version=\"1.11\">\n<p class=\"version-note-title\">Deprecated since Django 1.11</p><p><span class=\"versionmodified deprecated\">Obsolète depuis la version 1.11: </span>Préférez <a class=\"reference internal\" href=\"#django.utils.text.format_lazy\" title=\"django.utils.text.format_lazy\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">django.utils.text.format_lazy()</span></code></a>. <code class=\"docutils literal notranslate\"><span class=\"pre\">string_concat(*strings)</span></code> peut être remplacé par <code class=\"docutils literal notranslate\"><span class=\"pre\">format_lazy('{}'</span> <span class=\"pre\">*</span> <span class=\"pre\">len(strings),</span> <span class=\"pre\">*strings)</span></code>.</p>\n</aside>\n<p>Variante différée de la concaténation de chaînes, nécessaire pour les traductions qui sont formées de plusieurs parties.</p>\n</dd></dl>\n\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.utils.translation.activate\">\n<span class=\"sig-name descname\"><span class=\"pre\">activate</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">language</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.translation.activate\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Récupère le catalogue de traduction d’une langue donnée et l’active comme catalogue de traduction courant pour le fil d’exécution en cours.</p>\n</dd></dl>\n\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.utils.translation.deactivate\">\n<span class=\"sig-name descname\"><span class=\"pre\">deactivate</span></span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.translation.deactivate\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Désactive le catalogue de traduction actif afin que des appels à _ subséquents vont refaire appel au catalogue de traduction par défaut.</p>\n</dd></dl>\n\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.utils.translation.deactivate_all\">\n<span class=\"sig-name descname\"><span class=\"pre\">deactivate_all</span></span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.translation.deactivate_all\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Place une instance de <code class=\"docutils literal notranslate\"><span class=\"pre\">NullTranslations()</span></code> comme catalogue de traduction actif. Cela peut être utile si l’on souhaite que des traductions différées apparaissent avec leur chaîne originale (donc non traduite) pour une raison quelconque.</p>\n</dd></dl>\n\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.utils.translation.override\">\n<span class=\"sig-name descname\"><span class=\"pre\">override</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">language</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">deactivate</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">False</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.translation.override\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Un gestionnaire de contexte Python qui utilise <a class=\"reference internal\" href=\"#django.utils.translation.activate\" title=\"django.utils.translation.activate\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">django.utils.translation.activate()</span></code></a> pour récupérer le catalogue de traduction d’une langue données, qui l’active comme catalogue de traduction pour le fil d’exécution en cours et qui réactive la langue précédemment active lors de sa sortie. Il est possible de définir le paramètre <code class=\"docutils literal notranslate\"><span class=\"pre\">deactivate</span></code> à <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> si l’on souhaite que la langue de traduction temporaire soit simplement désactivée à la sortie du gestionnaire avec <a class=\"reference internal\" href=\"#django.utils.translation.deactivate\" title=\"django.utils.translation.deactivate\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">django.utils.translation.deactivate()</span></code></a>. Si le paramètre <code class=\"docutils literal notranslate\"><span class=\"pre\">language</span></code> vaut <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code>, une instance de <code class=\"docutils literal notranslate\"><span class=\"pre\">NullTranslations()</span></code> est activée dans le code affecté par le gestionnaire de contexte.</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">override</span></code> est aussi utilisable comme décorateur de fonction.</p>\n</dd></dl>\n\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.utils.translation.check_for_language\">\n<span class=\"sig-name descname\"><span class=\"pre\">check_for_language</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">lang_code</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.translation.check_for_language\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Contrôle s’il existe un fichier de langue global pour le code de langue donné (par ex. “fr”, “pt_BR”). Ceci est utilisé pour décider si une langue demandée par un utilisateur est disponible.</p>\n</dd></dl>\n\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.utils.translation.get_language\">\n<span class=\"sig-name descname\"><span class=\"pre\">get_language</span></span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.translation.get_language\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Renvoie le code de langue actuellement sélectionné. Renvoie <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code> si les traductions sont temporairement désactivées (par <a class=\"reference internal\" href=\"#django.utils.translation.deactivate_all\" title=\"django.utils.translation.deactivate_all\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">deactivate_all()</span></code></a> ou lorsque <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code> est passé à <a class=\"reference internal\" href=\"#django.utils.translation.override\" title=\"django.utils.translation.override\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">override()</span></code></a>).</p>\n</dd></dl>\n\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.utils.translation.get_language_bidi\">\n<span class=\"sig-name descname\"><span class=\"pre\">get_language_bidi</span></span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.translation.get_language_bidi\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Renvoie l’agencement bidirectionnel de la langue sélectionnée :</p>\n<ul class=\"simple\">\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code> = agencement de gauche à droite</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> = agencement de droite à gauche</p></li>\n</ul>\n</dd></dl>\n\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.utils.translation.get_language_from_request\">\n<span class=\"sig-name descname\"><span class=\"pre\">get_language_from_request</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">check_path</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">False</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.translation.get_language_from_request\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Analyse la requête pour trouver quelle est la langue souhaitée par l’utilisateur. Seules les langues figurant dans <code class=\"docutils literal notranslate\"><span class=\"pre\">settings.LANGUAGES</span></code> sont prises en compte. Si l’utilisateur demande un sous-code de langue alors que seule la langue principale est disponible, c’est la langue principale qui est renvoyée.</p>\n<p>Si <code class=\"docutils literal notranslate\"><span class=\"pre\">check_path</span></code> vaut <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>, la fonction examine d’abord l’URL demandée pour voir si son chemin commence par un code de langue figurant dans le réglage <a class=\"reference internal\" href=\"/fr/1.11/ref/settings/#std-setting-LANGUAGES\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">LANGUAGES</span></code></a>.</p>\n</dd></dl>\n\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.utils.translation.to_locale\">\n<span class=\"sig-name descname\"><span class=\"pre\">to_locale</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">language</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.translation.to_locale\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Transforme un nom de langue (en-us) en un nom de locale (en_US).</p>\n</dd></dl>\n\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.utils.translation.templatize\">\n<span class=\"sig-name descname\"><span class=\"pre\">templatize</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">src</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.utils.translation.templatize\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Transforme un gabarit Django en un contenu analysable par <code class=\"docutils literal notranslate\"><span class=\"pre\">xgettext</span></code>. Ce processus traduit les balises de traduction de Django en invocations de fonctions <code class=\"docutils literal notranslate\"><span class=\"pre\">gettext</span></code> standard.</p>\n</dd></dl>\n\n<dl class=\"py data\">\n<dt class=\"sig sig-object py\" id=\"django.utils.translation.LANGUAGE_SESSION_KEY\">\n<span class=\"sig-name descname\"><span class=\"pre\">LANGUAGE_SESSION_KEY</span></span><a class=\"heading-anchor\" href=\"#django.utils.translation.LANGUAGE_SESSION_KEY\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Clé de session servant à stocker la langue active de la session en cours.</p>\n</dd></dl>\n\n</section>","rootId":"module-django.utils","toc":[{"title":"django.utils.cache","anchor":"module-django.utils.cache","children":[]},{"title":"django.utils.dateparse","anchor":"module-django.utils.dateparse","children":[]},{"title":"django.utils.decorators","anchor":"module-django.utils.decorators","children":[]},{"title":"django.utils.encoding","anchor":"module-django.utils.encoding","children":[]},{"title":"django.utils.feedgenerator","anchor":"module-django.utils.feedgenerator","children":[{"title":"SyndicationFeed","anchor":"syndicationfeed","children":[]},{"title":"Enclosure","anchor":"enclosure","children":[]},{"title":"RssFeed","anchor":"rssfeed","children":[]},{"title":"Rss201rev2Feed","anchor":"rss201rev2feed","children":[]},{"title":"RssUserland091Feed","anchor":"rssuserland091feed","children":[]},{"title":"Atom1Feed","anchor":"atom1feed","children":[]}]},{"title":"django.utils.functional","anchor":"module-django.utils.functional","children":[]},{"title":"django.utils.html","anchor":"module-django.utils.html","children":[]},{"title":"django.utils.http","anchor":"module-django.utils.http","children":[]},{"title":"django.utils.module_loading","anchor":"module-django.utils.module_loading","children":[]},{"title":"django.utils.safestring","anchor":"module-django.utils.safestring","children":[]},{"title":"django.utils.text","anchor":"module-django.utils.text","children":[]},{"title":"django.utils.timezone","anchor":"module-django.utils.timezone","children":[]},{"title":"django.utils.translation","anchor":"module-django.utils.translation","children":[]}],"breadcrumbs":[{"docname":"ref/index","title":"Référence de l’API","url":"/fr/1.11/ref/"}],"prev":{"docname":"ref/urls","title":"Fonctions utilitaires django.conf.urls","url":"/fr/1.11/ref/urls/"},"next":{"docname":"ref/validators","title":"Validateurs","url":"/fr/1.11/ref/validators/"},"formats":{"html":"/fr/1.11/ref/utils/","markdown":"/fr/1.11/ref/utils.md","json":"/fr/1.11/ref/utils.json"},"source":"https://github.com/django/django/blob/stable/1.11.x/docs/ref/utils.txt","official":"https://docs.djangoproject.com/fr/1.11/ref/utils/","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","fr","ja","id","pt-br","ko","es","el","pl"]}