{"title":"Le système des plans de site (sitemap)","version":"3.0","locale":"fr","docname":"ref/contrib/sitemaps","url":"/fr/3.0/ref/contrib/sitemaps/","canonical":"https://djangodocs.dev/fr/3.0/ref/contrib/sitemaps/","summary":"Django est livré avec un système de génération de plans de site à haut niveau qui permet de créer des fichiers XML sitemap . Aperçu Lien vers cette rubrique # Un…","html":"<span id=\"the-sitemap-framework\"></span><h1>Le système des plans de site (<code class=\"docutils literal notranslate\"><span class=\"pre\">sitemap</span></code>)<a class=\"heading-anchor\" href=\"#module-django.contrib.sitemaps\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>Django est livré avec un système de génération de plans de site à haut niveau qui permet de créer des fichiers XML <a class=\"reference external\" href=\"https://www.sitemaps.org/\">sitemap</a>.</p>\n<section id=\"overview\">\n<h2>Aperçu<a class=\"heading-anchor\" href=\"#overview\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Un plan de site « sitemap » est un fichier XML sur un site Web indiquant aux robots des moteurs de recherche à quelle fréquence les pages changent et comment certaines pages « importantes » sont en relation avec d’autres pages du site. Cette information aide les moteurs de recherche à indexer un site.</p>\n<p>L’application sitemap de Django automatise la création de ce fichier XML en permettant d’exprimer cette information sous forme de code Python.</p>\n<p>Cela fonctionne un peu comme le <a class=\"reference internal\" href=\"/fr/3.0/ref/contrib/syndication/\"><span class=\"doc\">système de syndication</span></a> de Django. Pour créer un plan de site, écrivez une classe <a class=\"reference internal\" href=\"#django.contrib.sitemaps.Sitemap\" title=\"django.contrib.sitemaps.Sitemap\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">Sitemap</span></code></a> et référencez-la dans la <a class=\"reference internal\" href=\"/fr/3.0/topics/http/urls/\"><span class=\"doc\">configuration d’URL</span></a>.</p>\n</section>\n<section id=\"installation\">\n<h2>Installation<a class=\"heading-anchor\" href=\"#installation\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Pour installer l’application sitemap, procédez comme suit :</p>\n<ol class=\"arabic simple\">\n<li><p>Ajoutez <code class=\"docutils literal notranslate\"><span class=\"pre\">'django.contrib.sitemaps'</span></code> au réglage <a class=\"reference internal\" href=\"/fr/3.0/ref/settings/#std-setting-INSTALLED_APPS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">INSTALLED_APPS</span></code></a>.</p></li>\n<li><p>Vérifiez la présence d’un moteur <code class=\"docutils literal notranslate\"><span class=\"pre\">DjangoTemplates``dont</span> <span class=\"pre\">l'option</span> <span class=\"pre\">``APP_DIRS</span></code> vaut <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> dans le réglage <a class=\"reference internal\" href=\"/fr/3.0/ref/settings/#std-setting-TEMPLATES\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">TEMPLATES</span></code></a>. Il y est par défaut, de sorte que vous aurez uniquement besoin de l’ajouter si vous avez modifié ce réglage.</p></li>\n<li><p>Assurez-vous d’avoir installé le <a class=\"reference internal\" href=\"/fr/3.0/ref/contrib/sites/#module-django.contrib.sites\" title=\"django.contrib.sites: Lets you operate multiple websites from the same database and Django project\"><code class=\"xref py py-mod docutils literal notranslate\"><span class=\"pre\">gestionnaire</span> <span class=\"pre\">de</span> <span class=\"pre\">sites</span></code></a>.</p></li>\n</ol>\n<p>(Remarque : l’application sitemap n’installe aucune table de base de données. La seule raison pour laquelle elle doit être présente dans <a class=\"reference internal\" href=\"/fr/3.0/ref/settings/#std-setting-INSTALLED_APPS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">INSTALLED_APPS</span></code></a> est que la fonction de chargement des gabarits <a class=\"reference internal\" href=\"/fr/3.0/ref/templates/api/#django.template.loaders.app_directories.Loader\" title=\"django.template.loaders.app_directories.Loader\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">Loader()</span></code></a> doit pouvoir trouver les gabarits par défaut.)</p>\n</section>\n<section id=\"initialization\">\n<h2>Initialisation<a class=\"heading-anchor\" href=\"#initialization\"><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.contrib.sitemaps.views.sitemap\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">views.</span></span><span class=\"sig-name descname\"><span class=\"pre\">sitemap</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\">sitemaps</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">section</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\">template_name</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">'sitemap.xml'</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">content_type</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">'application/xml'</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.sitemaps.views.sitemap\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Pour activer la génération du plan du site d’un site Django, ajoutez cette ligne à la <a class=\"reference internal\" href=\"/fr/3.0/topics/http/urls/\"><span class=\"doc\">configuration d’URL</span></a>:</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.contrib.sitemaps.views</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">sitemap</span>\n\n<span class=\"n\">path</span><span class=\"p\">(</span><span class=\"s1\">&#39;sitemap.xml&#39;</span><span class=\"p\">,</span> <span class=\"n\">sitemap</span><span class=\"p\">,</span> <span class=\"p\">{</span><span class=\"s1\">&#39;sitemaps&#39;</span><span class=\"p\">:</span> <span class=\"n\">sitemaps</span><span class=\"p\">},</span>\n     <span class=\"n\">name</span><span class=\"o\">=</span><span class=\"s1\">&#39;django.contrib.sitemaps.views.sitemap&#39;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Cela indique à Django de construire un plan de site lorsqu’un client accède à <code class=\"file docutils literal notranslate\"><span class=\"pre\">/sitemap.xml</span></code>.</p>\n<p>Le nom du fichier sitemap n’est pas important, mais l’emplacement l’est. Les moteurs de recherche n’indexeront que les liens du plan de site à partir du niveau actuel de l’URL et en-dessous. Par exemple, si <code class=\"file docutils literal notranslate\"><span class=\"pre\">sitemap.xml</span></code> réside dans le répertoire racine, il peut faire référence à n’importe quelle URL du site. Cependant, si le fichier sitemap réside dans <code class=\"file docutils literal notranslate\"><span class=\"pre\">/content/sitemap.xml</span></code>, il ne peut référencer que des URL qui commencent par <code class=\"file docutils literal notranslate\"><span class=\"pre\">/content/</span></code>.</p>\n<p>La vue <code class=\"docutils literal notranslate\"><span class=\"pre\">sitemap</span></code> accepte un paramètre supplémentaire obligatoire : <code class=\"docutils literal notranslate\"><span class=\"pre\">{'sitemaps':</span> <span class=\"pre\">sitemaps}</span></code>. <code class=\"docutils literal notranslate\"><span class=\"pre\">sitemaps</span></code> doit être un dictionnaire qui associe une étiquette de section courte (par exemple, <code class=\"docutils literal notranslate\"><span class=\"pre\">blog</span></code> ou <code class=\"docutils literal notranslate\"><span class=\"pre\">nouvelles</span></code>) à sa classe <a class=\"reference internal\" href=\"#django.contrib.sitemaps.Sitemap\" title=\"django.contrib.sitemaps.Sitemap\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">Sitemap</span></code></a> (par exemple, <code class=\"docutils literal notranslate\"><span class=\"pre\">BlogSitemap</span></code> ou <code class=\"docutils literal notranslate\"><span class=\"pre\">NewsSitemap</span></code>). Il peut également s’appliquer à une <em>instance</em> de classe <a class=\"reference internal\" href=\"#django.contrib.sitemaps.Sitemap\" title=\"django.contrib.sitemaps.Sitemap\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">Sitemap</span></code></a> (par exemple, <code class=\"docutils literal notranslate\"><span class=\"pre\">BlogSitemap(ma_variable)</span></code>).</p>\n</section>\n<section id=\"sitemap-classes\">\n<h2>Classes <code class=\"docutils literal notranslate\"><span class=\"pre\">Sitemap</span></code><a class=\"heading-anchor\" href=\"#sitemap-classes\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Une classe <a class=\"reference internal\" href=\"#django.contrib.sitemaps.Sitemap\" title=\"django.contrib.sitemaps.Sitemap\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">Sitemap</span></code></a> est une classe Python qui représente une « section » d’entrées dans votre plan de site. Par exemple, une classe <a class=\"reference internal\" href=\"#django.contrib.sitemaps.Sitemap\" title=\"django.contrib.sitemaps.Sitemap\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">Sitemap</span></code></a> pourrait représenter toutes les entrées de votre blog, tandis qu’une autre pourrait représenter tous les évènements d’un calendrier d’évènements.</p>\n<p>Dans le cas le plus simple, toutes ces sections sont regroupées dans un seul <code class=\"file docutils literal notranslate\"><span class=\"pre\">sitemap.xml</span></code>, mais il est également possible d’utiliser le système pour générer un index de sitemap qui référence d’autres fichiers sitemap individuels, un par section (voir <a class=\"reference internal\" href=\"#creating-a-sitemap-index\">Création d’un index de plan de site</a> ci-dessous).</p>\n<p>Les classes <a class=\"reference internal\" href=\"#django.contrib.sitemaps.Sitemap\" title=\"django.contrib.sitemaps.Sitemap\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">Sitemap</span></code></a> doivent être des sous-classes de <code class=\"docutils literal notranslate\"><span class=\"pre\">django.contrib.sitemaps.Sitemap</span></code>. Elles peuvent résider n’importe où dans votre code source.</p>\n</section>\n<section id=\"an-example\">\n<h2>Un exemple<a class=\"heading-anchor\" href=\"#an-example\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Supposons que vous avez un système de blog, avec un modèle <code class=\"docutils literal notranslate\"><span class=\"pre\">Entry</span></code>. Vous souhaitez que le plan de site contienne les liens vers tous les articles de blog. Voici à quoi la classe de plan de site pourrait ressembler :</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.contrib.sitemaps</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">Sitemap</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">blog.models</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">Entry</span>\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">BlogSitemap</span><span class=\"p\">(</span><span class=\"n\">Sitemap</span><span class=\"p\">):</span>\n    <span class=\"n\">changefreq</span> <span class=\"o\">=</span> <span class=\"s2\">&quot;never&quot;</span>\n    <span class=\"n\">priority</span> <span class=\"o\">=</span> <span class=\"mf\">0.5</span>\n\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">items</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">):</span>\n        <span class=\"k\">return</span> <span class=\"n\">Entry</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">filter</span><span class=\"p\">(</span><span class=\"n\">is_draft</span><span class=\"o\">=</span><span class=\"kc\">False</span><span class=\"p\">)</span>\n\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">lastmod</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">obj</span><span class=\"p\">):</span>\n        <span class=\"k\">return</span> <span class=\"n\">obj</span><span class=\"o\">.</span><span class=\"n\">pub_date</span>\n</code></pre></div>\n<p>Remarque :</p>\n<ul class=\"simple\">\n<li><p><a class=\"reference internal\" href=\"#django.contrib.sitemaps.Sitemap.changefreq\" title=\"django.contrib.sitemaps.Sitemap.changefreq\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">changefreq</span></code></a> et <a class=\"reference internal\" href=\"#django.contrib.sitemaps.Sitemap.priority\" title=\"django.contrib.sitemaps.Sitemap.priority\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">priority</span></code></a> sont des attributs de classe correspondant respectivement aux éléments <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;changefreq&gt;</span></code> et <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;priority&gt;</span></code>. Il est possible qu’ils correspondent à des fonctions, comme pour <a class=\"reference internal\" href=\"#django.contrib.sitemaps.Sitemap.lastmod\" title=\"django.contrib.sitemaps.Sitemap.lastmod\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">lastmod</span></code></a> dans l’exemple ci-dessus.</p></li>\n<li><p><a class=\"reference internal\" href=\"#django.contrib.sitemaps.Sitemap.items\" title=\"django.contrib.sitemaps.Sitemap.items\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">items()</span></code></a> est une méthode qui renvoie une <span class=\"xref std std-term\">séquence</span> ou une requête <code class=\"docutils literal notranslate\"><span class=\"pre\">QuerySet</span></code> d’objets. Les objets renvoyés seront transmis à toute méthode exécutable correspondant à une propriété de sitemap (<a class=\"reference internal\" href=\"#django.contrib.sitemaps.Sitemap.location\" title=\"django.contrib.sitemaps.Sitemap.location\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">location</span></code></a>, <a class=\"reference internal\" href=\"#django.contrib.sitemaps.Sitemap.lastmod\" title=\"django.contrib.sitemaps.Sitemap.lastmod\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">lastmod</span></code></a>, <a class=\"reference internal\" href=\"#django.contrib.sitemaps.Sitemap.changefreq\" title=\"django.contrib.sitemaps.Sitemap.changefreq\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">changefreq</span></code></a> et <a class=\"reference internal\" href=\"#django.contrib.sitemaps.Sitemap.priority\" title=\"django.contrib.sitemaps.Sitemap.priority\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">priority</span></code></a>).</p></li>\n<li><p><a class=\"reference internal\" href=\"#django.contrib.sitemaps.Sitemap.lastmod\" title=\"django.contrib.sitemaps.Sitemap.lastmod\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">lastmod</span></code></a> doit renvoyer 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></li>\n<li><p>Il n’y a pas de méthode <a class=\"reference internal\" href=\"#django.contrib.sitemaps.Sitemap.location\" title=\"django.contrib.sitemaps.Sitemap.location\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">location</span></code></a> dans cet exemple, mais vous pouvez la fournir afin de préciser l’URL de l’objet. Par défaut, <a class=\"reference internal\" href=\"#django.contrib.sitemaps.Sitemap.location\" title=\"django.contrib.sitemaps.Sitemap.location\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">location()</span></code></a> appelle <code class=\"docutils literal notranslate\"><span class=\"pre\">get_absolute_url()</span></code> pour chaque objet et renvoie le résultat.</p></li>\n</ul>\n</section>\n<section id=\"sitemap-class-reference\">\n<h2>Référence de la classe <code class=\"docutils literal notranslate\"><span class=\"pre\">Sitemap</span></code><a class=\"heading-anchor\" href=\"#sitemap-class-reference\"><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.contrib.sitemaps.Sitemap\">\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\">Sitemap</span></span><a class=\"heading-anchor\" href=\"#django.contrib.sitemaps.Sitemap\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Une classe <code class=\"docutils literal notranslate\"><span class=\"pre\">Sitemap</span></code> peut définir les méthodes/attributs suivants :</p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.sitemaps.Sitemap.items\">\n<span class=\"sig-name descname\"><span class=\"pre\">items</span></span><a class=\"heading-anchor\" href=\"#django.contrib.sitemaps.Sitemap.items\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><strong>Obligatoire.</strong> Une méthode qui renvoie une <span class=\"xref std std-term\">séquence</span> ou une requête <code class=\"docutils literal notranslate\"><span class=\"pre\">QuerySet</span></code> d’objets. Le système ne se soucie pas de quel <em>type</em> d’objet il s’agit ; tout ce qui compte, c’est que ces objets sont transmis aux méthodes <a class=\"reference internal\" href=\"#django.contrib.sitemaps.Sitemap.location\" title=\"django.contrib.sitemaps.Sitemap.location\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">location()</span></code></a>, <a class=\"reference internal\" href=\"#django.contrib.sitemaps.Sitemap.lastmod\" title=\"django.contrib.sitemaps.Sitemap.lastmod\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">lastmod()</span></code></a>, <a class=\"reference internal\" href=\"#django.contrib.sitemaps.Sitemap.changefreq\" title=\"django.contrib.sitemaps.Sitemap.changefreq\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">changefreq()</span></code></a> et <a class=\"reference internal\" href=\"#django.contrib.sitemaps.Sitemap.priority\" title=\"django.contrib.sitemaps.Sitemap.priority\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">priority()</span></code></a>.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.sitemaps.Sitemap.location\">\n<span class=\"sig-name descname\"><span class=\"pre\">location</span></span><a class=\"heading-anchor\" href=\"#django.contrib.sitemaps.Sitemap.location\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><strong>Facultatif.</strong> Soit une méthode, soit un attribut.</p>\n<p>Si c’est une méthode, elle doit renvoyer le chemin absolu pour le dit objet renvoyé par <a class=\"reference internal\" href=\"#django.contrib.sitemaps.Sitemap.items\" title=\"django.contrib.sitemaps.Sitemap.items\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">items()</span></code></a>.</p>\n<p>Si c’est un attribut, sa valeur doit être une chaîne représentant un chemin absolu à utiliser pour <em>chaque</em> objet renvoyé par <a class=\"reference internal\" href=\"#django.contrib.sitemaps.Sitemap.items\" title=\"django.contrib.sitemaps.Sitemap.items\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">items()</span></code></a>.</p>\n<p>Dans les deux cas, « chemin absolu » signifie une URL qui ne comprend ni le protocole ni le domaine. Exemples :</p>\n<ul class=\"simple\">\n<li><p>Bon : <code class=\"file docutils literal notranslate\"><span class=\"pre\">'/foo/bar/'</span></code></p></li>\n<li><p>Mauvais : <code class=\"file docutils literal notranslate\"><span class=\"pre\">'example.com/foo/bar/'</span></code></p></li>\n<li><p>Mauvais : <code class=\"file docutils literal notranslate\"><span class=\"pre\">'https://example.com/foo/bar/'</span></code></p></li>\n</ul>\n<p>Si <a class=\"reference internal\" href=\"#django.contrib.sitemaps.Sitemap.location\" title=\"django.contrib.sitemaps.Sitemap.location\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">location</span></code></a> n’est pas fourni, le système appelle la méthode <code class=\"docutils literal notranslate\"><span class=\"pre\">get_absolute_url()</span></code> de chaque objet renvoyé par <a class=\"reference internal\" href=\"#django.contrib.sitemaps.Sitemap.items\" title=\"django.contrib.sitemaps.Sitemap.items\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">items()</span></code></a>.</p>\n<p>Pour indiquer un protocole autre que <code class=\"docutils literal notranslate\"><span class=\"pre\">'http'</span></code>, utilisez <a class=\"reference internal\" href=\"#django.contrib.sitemaps.Sitemap.protocol\" title=\"django.contrib.sitemaps.Sitemap.protocol\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">protocol</span></code></a>.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.sitemaps.Sitemap.lastmod\">\n<span class=\"sig-name descname\"><span class=\"pre\">lastmod</span></span><a class=\"heading-anchor\" href=\"#django.contrib.sitemaps.Sitemap.lastmod\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><strong>Facultatif.</strong> Soit une méthode, soit un attribut.</p>\n<p>Si c’est une méthode, elle doit accepter un paramètre, un objet renvoyé par <a class=\"reference internal\" href=\"#django.contrib.sitemaps.Sitemap.items\" title=\"django.contrib.sitemaps.Sitemap.items\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">items()</span></code></a>, et renvoyer la date/heure de dernière modification de cet objet, en tant que <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<p>Si c’est un attribut, sa valeur doit être 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 la date/heure de dernière modification pour <em>chaque</em> objet renvoyé par <a class=\"reference internal\" href=\"#django.contrib.sitemaps.Sitemap.items\" title=\"django.contrib.sitemaps.Sitemap.items\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">items()</span></code></a>.</p>\n<p>Si tous les éléments d’un plan de site possèdent <a class=\"reference internal\" href=\"#django.contrib.sitemaps.Sitemap.lastmod\" title=\"django.contrib.sitemaps.Sitemap.lastmod\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">lastmod</span></code></a>, le plan de site généré par <a class=\"reference internal\" href=\"#django.contrib.sitemaps.views.sitemap\" title=\"django.contrib.sitemaps.views.sitemap\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">views.sitemap()</span></code></a> comportera un en-tête <code class=\"docutils literal notranslate\"><span class=\"pre\">Last-Modified</span></code> égal à la valeur <code class=\"docutils literal notranslate\"><span class=\"pre\">lastmod</span></code> la plus récente. Vous pouvez activer l’intergiciel <a class=\"reference internal\" href=\"/fr/3.0/ref/middleware/#django.middleware.http.ConditionalGetMiddleware\" title=\"django.middleware.http.ConditionalGetMiddleware\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">ConditionalGetMiddleware</span></code></a> pour que Django réponde de manière appropriée aux requêtes contenant un en-tête <code class=\"docutils literal notranslate\"><span class=\"pre\">If-Modified-Since</span></code>, ce qui évitera d’envoyer le plan de site si celui-ci n’a pas changé.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.sitemaps.Sitemap.changefreq\">\n<span class=\"sig-name descname\"><span class=\"pre\">changefreq</span></span><a class=\"heading-anchor\" href=\"#django.contrib.sitemaps.Sitemap.changefreq\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><strong>Facultatif.</strong> Soit une méthode, soit un attribut.</p>\n<p>Si c’est une méthode, elle doit accepter un paramètre, un objet renvoyé par <a class=\"reference internal\" href=\"#django.contrib.sitemaps.Sitemap.items\" title=\"django.contrib.sitemaps.Sitemap.items\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">items()</span></code></a>, et renvoyer la fréquence de modification de cet objet, en tant que chaîne.</p>\n<p>Si c’est un attribut, sa valeur doit être une chaîne représentant la fréquence de modification de <em>chaque</em> objet renvoyé par <a class=\"reference internal\" href=\"#django.contrib.sitemaps.Sitemap.items\" title=\"django.contrib.sitemaps.Sitemap.items\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">items()</span></code></a>.</p>\n<p>Les valeurs possibles pour <a class=\"reference internal\" href=\"#django.contrib.sitemaps.Sitemap.changefreq\" title=\"django.contrib.sitemaps.Sitemap.changefreq\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">changefreq</span></code></a>, que ce soit une méthode ou un attribut, sont :</p>\n<ul class=\"simple\">\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">'always'</span></code> (toujours)</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">'hourly'</span></code> (chaque heure)</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">'daily'</span></code> (quotidiennement)</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">'weekly'</span></code> (chaque semaine)</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">'monthly'</span></code> (chaque mois)</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">'yearly'</span></code> (annuellement)</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">'never'</span></code> (jamais)</p></li>\n</ul>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.sitemaps.Sitemap.priority\">\n<span class=\"sig-name descname\"><span class=\"pre\">priority</span></span><a class=\"heading-anchor\" href=\"#django.contrib.sitemaps.Sitemap.priority\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><strong>Facultatif.</strong> Soit une méthode, soit un attribut.</p>\n<p>Si c’est une méthode, elle doit accepter un paramètre, un objet renvoyé par <a class=\"reference internal\" href=\"#django.contrib.sitemaps.Sitemap.items\" title=\"django.contrib.sitemaps.Sitemap.items\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">items()</span></code></a>, et renvoyer la priorité de cet objet, en tant que chaîne ou nombre à virgule.</p>\n<p>Si c’est un attribut, sa valeur doit être une chaîne ou un nombre à virgule représentant la priorité de <em>chaque</em> objet renvoyé par <a class=\"reference internal\" href=\"#django.contrib.sitemaps.Sitemap.items\" title=\"django.contrib.sitemaps.Sitemap.items\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">items()</span></code></a>.</p>\n<p>Exemples de valeurs pour <a class=\"reference internal\" href=\"#django.contrib.sitemaps.Sitemap.priority\" title=\"django.contrib.sitemaps.Sitemap.priority\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">priority</span></code></a>: <code class=\"docutils literal notranslate\"><span class=\"pre\">0.4</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">1.0</span></code>. La priorité par défaut d’une page est de <code class=\"docutils literal notranslate\"><span class=\"pre\">0.5</span></code>. Voir la <a class=\"reference external\" href=\"https://www.sitemaps.org/protocol.html#prioritydef\">documentation de sitemaps.org</a> pour plus d’informations.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.sitemaps.Sitemap.protocol\">\n<span class=\"sig-name descname\"><span class=\"pre\">protocol</span></span><a class=\"heading-anchor\" href=\"#django.contrib.sitemaps.Sitemap.protocol\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><strong>Facultatif.</strong></p>\n<p>Cet attribut définit le protocole (<code class=\"docutils literal notranslate\"><span class=\"pre\">'http'</span></code> ou <code class=\"docutils literal notranslate\"><span class=\"pre\">'https'</span></code>) des URL dans le plan du site. S’il n’est pas défini, le protocole avec lequel le plan du site a été demandé sera utilisé. Si le plan du site est construit en dehors du contexte d’une requête, la valeur par défaut est <code class=\"docutils literal notranslate\"><span class=\"pre\">'http'</span></code>.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.sitemaps.Sitemap.limit\">\n<span class=\"sig-name descname\"><span class=\"pre\">limit</span></span><a class=\"heading-anchor\" href=\"#django.contrib.sitemaps.Sitemap.limit\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><strong>Facultatif.</strong></p>\n<p>Cet attribut définit le nombre maximum d’URL incluses sur chaque page du plan de site. Sa valeur ne doit pas dépasser la valeur par défaut de <code class=\"docutils literal notranslate\"><span class=\"pre\">50000</span></code>, qui est la valeur limite supérieure autorisée par le <a class=\"reference external\" href=\"https://www.sitemaps.org/protocol.html#index\">protocole des plans de site</a>.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.sitemaps.Sitemap.i18n\">\n<span class=\"sig-name descname\"><span class=\"pre\">i18n</span></span><a class=\"heading-anchor\" href=\"#django.contrib.sitemaps.Sitemap.i18n\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><strong>Facultatif.</strong></p>\n<p>Un attribut booléen qui définit si les URL de ce plan de site doivent être générées en utilisant toutes les langues de <a class=\"reference internal\" href=\"/fr/3.0/ref/settings/#std-setting-LANGUAGES\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">LANGUAGES</span></code></a>. La valeur par défaut est <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code>.</p>\n</dd></dl>\n\n</dd></dl>\n\n</section>\n<section id=\"shortcuts\">\n<h2>Raccourcis<a class=\"heading-anchor\" href=\"#shortcuts\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>L’infrastructure sitemap fournit une classe pratique pour un cas courant :</p>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.sitemaps.GenericSitemap\">\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\">GenericSitemap</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">info_dict</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">priority</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\">changefreq</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\">protocol</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.contrib.sitemaps.GenericSitemap\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>La classe <a class=\"reference internal\" href=\"#django.contrib.sitemaps.GenericSitemap\" title=\"django.contrib.sitemaps.GenericSitemap\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">django.contrib.sitemaps.GenericSitemap</span></code></a> permet de créer un plan du site en lui passant un dictionnaire qui doit contenir au minimum une entrée <code class=\"docutils literal notranslate\"><span class=\"pre\">queryset</span></code>. Ce jeu de requête sera utilisé pour générer les éléments du plan du site. Le dictionnaire peut aussi contenir une clé <code class=\"docutils literal notranslate\"><span class=\"pre\">date_field</span></code> qui définit un champ de date pour les objets récupérés par <code class=\"docutils literal notranslate\"><span class=\"pre\">queryset</span></code>. Ce champ sera utilisé pour l’attribut <a class=\"reference internal\" href=\"#django.contrib.sitemaps.Sitemap.lastmod\" title=\"django.contrib.sitemaps.Sitemap.lastmod\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">lastmod</span></code></a> dans le plan du site généré.</p>\n<p>Les paramètres nommés <a class=\"reference internal\" href=\"#django.contrib.sitemaps.Sitemap.priority\" title=\"django.contrib.sitemaps.Sitemap.priority\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">priority</span></code></a>, <a class=\"reference internal\" href=\"#django.contrib.sitemaps.Sitemap.changefreq\" title=\"django.contrib.sitemaps.Sitemap.changefreq\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">changefreq</span></code></a> et <a class=\"reference internal\" href=\"#django.contrib.sitemaps.Sitemap.protocol\" title=\"django.contrib.sitemaps.Sitemap.protocol\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">protocol</span></code></a> permettent de définir ces attributs pour toutes les URL.</p>\n</dd></dl>\n\n<section id=\"example\">\n<h3>Exemple<a class=\"heading-anchor\" href=\"#example\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Voici un exemple de <a class=\"reference internal\" href=\"/fr/3.0/topics/http/urls/\"><span class=\"doc\">configuration d’URL</span></a> utilisant <a class=\"reference internal\" href=\"#django.contrib.sitemaps.GenericSitemap\" title=\"django.contrib.sitemaps.GenericSitemap\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">GenericSitemap</span></code></a>:</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.contrib.sitemaps</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">GenericSitemap</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.contrib.sitemaps.views</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">sitemap</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.urls</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">path</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">blog.models</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">Entry</span>\n\n<span class=\"n\">info_dict</span> <span class=\"o\">=</span> <span class=\"p\">{</span>\n    <span class=\"s1\">&#39;queryset&#39;</span><span class=\"p\">:</span> <span class=\"n\">Entry</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">all</span><span class=\"p\">(),</span>\n    <span class=\"s1\">&#39;date_field&#39;</span><span class=\"p\">:</span> <span class=\"s1\">&#39;pub_date&#39;</span><span class=\"p\">,</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">urlpatterns</span> <span class=\"o\">=</span> <span class=\"p\">[</span>\n    <span class=\"c1\"># some generic view using info_dict</span>\n    <span class=\"c1\"># ...</span>\n\n    <span class=\"c1\"># the sitemap</span>\n    <span class=\"n\">path</span><span class=\"p\">(</span><span class=\"s1\">&#39;sitemap.xml&#39;</span><span class=\"p\">,</span> <span class=\"n\">sitemap</span><span class=\"p\">,</span>\n         <span class=\"p\">{</span><span class=\"s1\">&#39;sitemaps&#39;</span><span class=\"p\">:</span> <span class=\"p\">{</span><span class=\"s1\">&#39;blog&#39;</span><span class=\"p\">:</span> <span class=\"n\">GenericSitemap</span><span class=\"p\">(</span><span class=\"n\">info_dict</span><span class=\"p\">,</span> <span class=\"n\">priority</span><span class=\"o\">=</span><span class=\"mf\">0.6</span><span class=\"p\">)}},</span>\n         <span class=\"n\">name</span><span class=\"o\">=</span><span class=\"s1\">&#39;django.contrib.sitemaps.views.sitemap&#39;</span><span class=\"p\">),</span>\n<span class=\"p\">]</span>\n</code></pre></div>\n</section>\n</section>\n<section id=\"sitemap-for-static-views\">\n<h2>Plan de site pour les vues statiques<a class=\"heading-anchor\" href=\"#sitemap-for-static-views\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Il peut souvent être nécessaire de faire indexer par les robots des moteurs de recherche des vues qui ne sont ni des pages de détail d’un objet, ni des pages statiques. La solution est de fournir une liste explicite de noms d’URL pour ces vues dans <code class=\"docutils literal notranslate\"><span class=\"pre\">items</span></code> et d’appeler <a class=\"reference internal\" href=\"/fr/3.0/ref/urlresolvers/#django.urls.reverse\" title=\"django.urls.reverse\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">reverse()</span></code></a> dans la méthode <code class=\"docutils literal notranslate\"><span class=\"pre\">location</span></code> du sitemap. 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=\"c1\"># sitemaps.py</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.contrib</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">sitemaps</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.urls</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">reverse</span>\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">StaticViewSitemap</span><span class=\"p\">(</span><span class=\"n\">sitemaps</span><span class=\"o\">.</span><span class=\"n\">Sitemap</span><span class=\"p\">):</span>\n    <span class=\"n\">priority</span> <span class=\"o\">=</span> <span class=\"mf\">0.5</span>\n    <span class=\"n\">changefreq</span> <span class=\"o\">=</span> <span class=\"s1\">&#39;daily&#39;</span>\n\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">items</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">):</span>\n        <span class=\"k\">return</span> <span class=\"p\">[</span><span class=\"s1\">&#39;main&#39;</span><span class=\"p\">,</span> <span class=\"s1\">&#39;about&#39;</span><span class=\"p\">,</span> <span class=\"s1\">&#39;license&#39;</span><span class=\"p\">]</span>\n\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">location</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">item</span><span class=\"p\">):</span>\n        <span class=\"k\">return</span> <span class=\"n\">reverse</span><span class=\"p\">(</span><span class=\"n\">item</span><span class=\"p\">)</span>\n\n<span class=\"c1\"># urls.py</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.contrib.sitemaps.views</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">sitemap</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.urls</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">path</span>\n\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">.sitemaps</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">StaticViewSitemap</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">.</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">views</span>\n\n<span class=\"n\">sitemaps</span> <span class=\"o\">=</span> <span class=\"p\">{</span>\n    <span class=\"s1\">&#39;static&#39;</span><span class=\"p\">:</span> <span class=\"n\">StaticViewSitemap</span><span class=\"p\">,</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">urlpatterns</span> <span class=\"o\">=</span> <span class=\"p\">[</span>\n    <span class=\"n\">path</span><span class=\"p\">(</span><span class=\"s1\">&#39;&#39;</span><span class=\"p\">,</span> <span class=\"n\">views</span><span class=\"o\">.</span><span class=\"n\">main</span><span class=\"p\">,</span> <span class=\"n\">name</span><span class=\"o\">=</span><span class=\"s1\">&#39;main&#39;</span><span class=\"p\">),</span>\n    <span class=\"n\">path</span><span class=\"p\">(</span><span class=\"s1\">&#39;about/&#39;</span><span class=\"p\">,</span> <span class=\"n\">views</span><span class=\"o\">.</span><span class=\"n\">about</span><span class=\"p\">,</span> <span class=\"n\">name</span><span class=\"o\">=</span><span class=\"s1\">&#39;about&#39;</span><span class=\"p\">),</span>\n    <span class=\"n\">path</span><span class=\"p\">(</span><span class=\"s1\">&#39;license/&#39;</span><span class=\"p\">,</span> <span class=\"n\">views</span><span class=\"o\">.</span><span class=\"n\">license</span><span class=\"p\">,</span> <span class=\"n\">name</span><span class=\"o\">=</span><span class=\"s1\">&#39;license&#39;</span><span class=\"p\">),</span>\n    <span class=\"c1\"># ...</span>\n    <span class=\"n\">path</span><span class=\"p\">(</span><span class=\"s1\">&#39;sitemap.xml&#39;</span><span class=\"p\">,</span> <span class=\"n\">sitemap</span><span class=\"p\">,</span> <span class=\"p\">{</span><span class=\"s1\">&#39;sitemaps&#39;</span><span class=\"p\">:</span> <span class=\"n\">sitemaps</span><span class=\"p\">},</span>\n         <span class=\"n\">name</span><span class=\"o\">=</span><span class=\"s1\">&#39;django.contrib.sitemaps.views.sitemap&#39;</span><span class=\"p\">)</span>\n<span class=\"p\">]</span>\n</code></pre></div>\n</section>\n<section id=\"creating-a-sitemap-index\">\n<h2>Création d’un index de plan de site<a class=\"heading-anchor\" href=\"#creating-a-sitemap-index\"><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.contrib.sitemaps.views.index\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">views.</span></span><span class=\"sig-name descname\"><span class=\"pre\">index</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\">sitemaps</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">template_name</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">'sitemap_index.xml'</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">content_type</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">'application/xml'</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">sitemap_url_name</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">'django.contrib.sitemaps.views.sitemap'</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.sitemaps.views.index\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Le système sitemap a également la possibilité de créer un index de plan de site qui référence des fichiers sitemap individuels, un pour chaque section définie dans le dictionnaire <code class=\"docutils literal notranslate\"><span class=\"pre\">sitemaps</span></code>. Les seules différences dans l’utilisation sont les suivantes :</p>\n<ul class=\"simple\">\n<li><p>Vous utilisez deux vues dans la configuration d’URL : <a class=\"reference internal\" href=\"#django.contrib.sitemaps.views.index\" title=\"django.contrib.sitemaps.views.index\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">django.contrib.sitemaps.views.index()</span></code></a> et <a class=\"reference internal\" href=\"#django.contrib.sitemaps.views.sitemap\" title=\"django.contrib.sitemaps.views.sitemap\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">django.contrib.sitemaps.views.sitemap()</span></code></a>.</p></li>\n<li><p>La vue <a class=\"reference internal\" href=\"#django.contrib.sitemaps.views.sitemap\" title=\"django.contrib.sitemaps.views.sitemap\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">django.contrib.sitemaps.views.sitemap()</span></code></a> doit accepter un paramètre nommé <code class=\"docutils literal notranslate\"><span class=\"pre\">section</span></code>.</p></li>\n</ul>\n<p>Voici à quoi ressembleraient les lignes appropriées de la configuration d’URL pour l’exemple 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=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.contrib.sitemaps</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">views</span>\n\n<span class=\"n\">urlpatterns</span> <span class=\"o\">=</span> <span class=\"p\">[</span>\n    <span class=\"n\">path</span><span class=\"p\">(</span><span class=\"s1\">&#39;sitemap.xml&#39;</span><span class=\"p\">,</span> <span class=\"n\">views</span><span class=\"o\">.</span><span class=\"n\">index</span><span class=\"p\">,</span> <span class=\"p\">{</span><span class=\"s1\">&#39;sitemaps&#39;</span><span class=\"p\">:</span> <span class=\"n\">sitemaps</span><span class=\"p\">}),</span>\n    <span class=\"n\">path</span><span class=\"p\">(</span><span class=\"s1\">&#39;sitemap-&lt;section&gt;.xml&#39;</span><span class=\"p\">,</span> <span class=\"n\">views</span><span class=\"o\">.</span><span class=\"n\">sitemap</span><span class=\"p\">,</span> <span class=\"p\">{</span><span class=\"s1\">&#39;sitemaps&#39;</span><span class=\"p\">:</span> <span class=\"n\">sitemaps</span><span class=\"p\">},</span>\n         <span class=\"n\">name</span><span class=\"o\">=</span><span class=\"s1\">&#39;django.contrib.sitemaps.views.sitemap&#39;</span><span class=\"p\">),</span>\n<span class=\"p\">]</span>\n</code></pre></div>\n<p>Cela générera automatiquement un fichier <code class=\"file docutils literal notranslate\"><span class=\"pre\">sitemap.xml</span></code> faisant référence à la fois à <code class=\"file docutils literal notranslate\"><span class=\"pre\">sitemap-flatpages.xml</span></code> et à <code class=\"file docutils literal notranslate\"><span class=\"pre\">sitemap-blog.xml</span></code>. Les classes <a class=\"reference internal\" href=\"#django.contrib.sitemaps.Sitemap\" title=\"django.contrib.sitemaps.Sitemap\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">Sitemap</span></code></a> et le dictionnaire <code class=\"docutils literal notranslate\"><span class=\"pre\">sitemaps</span></code> ne changent aucunement.</p>\n<p>Vous devriez créer un fichier d’index lorsqu’un plan de site contient plus de 50 000 URL. Dans ce cas, Django pagine automatiquement le plan du site et l’index reflétera cette situation.</p>\n<p>Si vous n’utilisez pas la vue sitemap ordinaire – par exemple, si elle est enveloppée par un décorateur de mise en cache – vous devez nommer votre vue sitemap et passer <code class=\"docutils literal notranslate\"><span class=\"pre\">sitemap_url_name</span></code> à la vue d’index :</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.contrib.sitemaps</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">views</span> <span class=\"k\">as</span> <span class=\"n\">sitemaps_views</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.views.decorators.cache</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">cache_page</span>\n\n<span class=\"n\">urlpatterns</span> <span class=\"o\">=</span> <span class=\"p\">[</span>\n    <span class=\"n\">path</span><span class=\"p\">(</span><span class=\"s1\">&#39;sitemap.xml&#39;</span><span class=\"p\">,</span>\n         <span class=\"n\">cache_page</span><span class=\"p\">(</span><span class=\"mi\">86400</span><span class=\"p\">)(</span><span class=\"n\">sitemaps_views</span><span class=\"o\">.</span><span class=\"n\">index</span><span class=\"p\">),</span>\n         <span class=\"p\">{</span><span class=\"s1\">&#39;sitemaps&#39;</span><span class=\"p\">:</span> <span class=\"n\">sitemaps</span><span class=\"p\">,</span> <span class=\"s1\">&#39;sitemap_url_name&#39;</span><span class=\"p\">:</span> <span class=\"s1\">&#39;sitemaps&#39;</span><span class=\"p\">}),</span>\n    <span class=\"n\">path</span><span class=\"p\">(</span><span class=\"s1\">&#39;sitemap-&lt;section&gt;.xml&#39;</span><span class=\"p\">,</span>\n         <span class=\"n\">cache_page</span><span class=\"p\">(</span><span class=\"mi\">86400</span><span class=\"p\">)(</span><span class=\"n\">sitemaps_views</span><span class=\"o\">.</span><span class=\"n\">sitemap</span><span class=\"p\">),</span>\n         <span class=\"p\">{</span><span class=\"s1\">&#39;sitemaps&#39;</span><span class=\"p\">:</span> <span class=\"n\">sitemaps</span><span class=\"p\">},</span> <span class=\"n\">name</span><span class=\"o\">=</span><span class=\"s1\">&#39;sitemaps&#39;</span><span class=\"p\">),</span>\n<span class=\"p\">]</span>\n</code></pre></div>\n</section>\n<section id=\"template-customization\">\n<h2>Personnalisation de gabarit<a class=\"heading-anchor\" href=\"#template-customization\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Si vous souhaitez utiliser un gabarit différent pour chaque plan de site ou d’index de plan de site disponible sur un site, vous pouvez l’indiquer en passant un paramètre <code class=\"docutils literal notranslate\"><span class=\"pre\">template_name</span></code> aux vues <code class=\"docutils literal notranslate\"><span class=\"pre\">sitemap</span></code> et <code class=\"docutils literal notranslate\"><span class=\"pre\">index</span></code> via la configuration d’URL :</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.contrib.sitemaps</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">views</span>\n\n<span class=\"n\">urlpatterns</span> <span class=\"o\">=</span> <span class=\"p\">[</span>\n    <span class=\"n\">path</span><span class=\"p\">(</span><span class=\"s1\">&#39;custom-sitemap.xml&#39;</span><span class=\"p\">,</span> <span class=\"n\">views</span><span class=\"o\">.</span><span class=\"n\">index</span><span class=\"p\">,</span> <span class=\"p\">{</span>\n        <span class=\"s1\">&#39;sitemaps&#39;</span><span class=\"p\">:</span> <span class=\"n\">sitemaps</span><span class=\"p\">,</span>\n        <span class=\"s1\">&#39;template_name&#39;</span><span class=\"p\">:</span> <span class=\"s1\">&#39;custom_sitemap.html&#39;</span>\n    <span class=\"p\">}),</span>\n    <span class=\"n\">path</span><span class=\"p\">(</span><span class=\"s1\">&#39;custom-sitemap-&lt;section&gt;.xml&#39;</span><span class=\"p\">,</span> <span class=\"n\">views</span><span class=\"o\">.</span><span class=\"n\">sitemap</span><span class=\"p\">,</span> <span class=\"p\">{</span>\n        <span class=\"s1\">&#39;sitemaps&#39;</span><span class=\"p\">:</span> <span class=\"n\">sitemaps</span><span class=\"p\">,</span>\n        <span class=\"s1\">&#39;template_name&#39;</span><span class=\"p\">:</span> <span class=\"s1\">&#39;custom_sitemap.html&#39;</span>\n    <span class=\"p\">},</span> <span class=\"n\">name</span><span class=\"o\">=</span><span class=\"s1\">&#39;django.contrib.sitemaps.views.sitemap&#39;</span><span class=\"p\">),</span>\n<span class=\"p\">]</span>\n</code></pre></div>\n<p>Ces vues renvoient des instances <a class=\"reference internal\" href=\"/fr/3.0/ref/template-response/#django.template.response.TemplateResponse\" title=\"django.template.response.TemplateResponse\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">TemplateResponse</span></code></a> permettant de personnaliser facilement les données de réponse avant le processus de rendu. Pour plus de détails, consultez la <a class=\"reference internal\" href=\"/fr/3.0/ref/template-response/\"><span class=\"doc\">documentation de TemplateResponse</span></a>.</p>\n<section id=\"context-variables\">\n<h3>Variables de contexte<a class=\"heading-anchor\" href=\"#context-variables\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Lors de la personnalisation des gabarits pour les vues <a class=\"reference internal\" href=\"#django.contrib.sitemaps.views.index\" title=\"django.contrib.sitemaps.views.index\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">index()</span></code></a> et <a class=\"reference internal\" href=\"#django.contrib.sitemaps.views.sitemap\" title=\"django.contrib.sitemaps.views.sitemap\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">sitemap()</span></code></a>, vous pouvez compter sur les variables de contexte suivantes.</p>\n</section>\n<section id=\"index\">\n<h3>Accueil<a class=\"heading-anchor\" href=\"#index\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>La variable <code class=\"docutils literal notranslate\"><span class=\"pre\">sitemaps</span></code> est une liste des URL absolues vers chacun des plans du site.</p>\n</section>\n<section id=\"id1\">\n<h3>Sitemap<a class=\"heading-anchor\" href=\"#id1\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>La variable <code class=\"docutils literal notranslate\"><span class=\"pre\">urlset</span></code> est une liste d’URL devant apparaître dans le plan du site. Chaque URL expose des attributs tels que définis dans la classe <a class=\"reference internal\" href=\"#django.contrib.sitemaps.Sitemap\" title=\"django.contrib.sitemaps.Sitemap\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">Sitemap</span></code></a>:</p>\n<ul class=\"simple\">\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">changefreq</span></code> (fréquence de modification)</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">item</span></code> (élément)</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">lastmod</span></code> (date de dernière modification)</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">location</span></code> (adresse)</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">priority</span></code> (priorité)</p></li>\n</ul>\n<p>L’attribut <code class=\"docutils literal notranslate\"><span class=\"pre\">item</span></code> a été ajouté pour chaque URL afin de permettre une personnalisation plus souple des gabarits, comme pour les <a class=\"reference external\" href=\"https://support.google.com/news/publisher/answer/74288?hl=en\">Google news sitemaps</a>. En supposant que <a class=\"reference internal\" href=\"#django.contrib.sitemaps.Sitemap.items\" title=\"django.contrib.sitemaps.Sitemap.items\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">items()</span></code></a> de <code class=\"docutils literal notranslate\"><span class=\"pre\">Sitemap</span></code> renvoie une liste d’éléments avec des champs <code class=\"docutils literal notranslate\"><span class=\"pre\">publication_date</span></code> et <code class=\"docutils literal notranslate\"><span class=\"pre\">tags</span></code>, le code ci-dessous devrait générer un plan de site compatible avec Google News :</p>\n<div class=\"code-block\" data-language=\"xml+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Xml Django</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=\"Xml Django code\"><code><span class=\"cp\">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;</span>\n<span class=\"nt\">&lt;urlset</span>\n<span class=\"w\">  </span><span class=\"na\">xmlns=</span><span class=\"s\">&quot;https://www.sitemaps.org/schemas/sitemap/0.9&quot;</span>\n<span class=\"w\">  </span><span class=\"na\">xmlns:news=</span><span class=\"s\">&quot;http://www.google.com/schemas/sitemap-news/0.9&quot;</span><span class=\"nt\">&gt;</span>\n<span class=\"cp\">{%</span> <span class=\"k\">spaceless</span> <span class=\"cp\">%}</span>\n<span class=\"cp\">{%</span> <span class=\"k\">for</span> <span class=\"nv\">url</span> <span class=\"k\">in</span> <span class=\"nv\">urlset</span> <span class=\"cp\">%}</span>\n<span class=\"w\">  </span><span class=\"nt\">&lt;url&gt;</span>\n<span class=\"w\">    </span><span class=\"nt\">&lt;loc&gt;</span><span class=\"cp\">{{</span> <span class=\"nv\">url.location</span> <span class=\"cp\">}}</span><span class=\"nt\">&lt;/loc&gt;</span>\n<span class=\"w\">    </span><span class=\"cp\">{%</span> <span class=\"k\">if</span> <span class=\"nv\">url.lastmod</span> <span class=\"cp\">%}</span><span class=\"nt\">&lt;lastmod&gt;</span><span class=\"cp\">{{</span> <span class=\"nv\">url.lastmod</span><span class=\"o\">|</span><span class=\"nf\">date</span><span class=\"s2\">:&quot;Y-m-d&quot;</span> <span class=\"cp\">}}</span><span class=\"nt\">&lt;/lastmod&gt;</span><span class=\"cp\">{%</span> <span class=\"k\">endif</span> <span class=\"cp\">%}</span>\n<span class=\"w\">    </span><span class=\"cp\">{%</span> <span class=\"k\">if</span> <span class=\"nv\">url.changefreq</span> <span class=\"cp\">%}</span><span class=\"nt\">&lt;changefreq&gt;</span><span class=\"cp\">{{</span> <span class=\"nv\">url.changefreq</span> <span class=\"cp\">}}</span><span class=\"nt\">&lt;/changefreq&gt;</span><span class=\"cp\">{%</span> <span class=\"k\">endif</span> <span class=\"cp\">%}</span>\n<span class=\"w\">    </span><span class=\"cp\">{%</span> <span class=\"k\">if</span> <span class=\"nv\">url.priority</span> <span class=\"cp\">%}</span><span class=\"nt\">&lt;priority&gt;</span><span class=\"cp\">{{</span> <span class=\"nv\">url.priority</span> <span class=\"cp\">}}</span><span class=\"nt\">&lt;/priority&gt;</span><span class=\"cp\">{%</span> <span class=\"k\">endif</span> <span class=\"cp\">%}</span>\n<span class=\"w\">    </span><span class=\"nt\">&lt;news:news&gt;</span>\n<span class=\"w\">      </span><span class=\"cp\">{%</span> <span class=\"k\">if</span> <span class=\"nv\">url.item.publication_date</span> <span class=\"cp\">%}</span><span class=\"nt\">&lt;news:publication_date&gt;</span><span class=\"cp\">{{</span> <span class=\"nv\">url.item.publication_date</span><span class=\"o\">|</span><span class=\"nf\">date</span><span class=\"s2\">:&quot;Y-m-d&quot;</span> <span class=\"cp\">}}</span><span class=\"nt\">&lt;/news:publication_date&gt;</span><span class=\"cp\">{%</span> <span class=\"k\">endif</span> <span class=\"cp\">%}</span>\n<span class=\"w\">      </span><span class=\"cp\">{%</span> <span class=\"k\">if</span> <span class=\"nv\">url.item.tags</span> <span class=\"cp\">%}</span><span class=\"nt\">&lt;news:keywords&gt;</span><span class=\"cp\">{{</span> <span class=\"nv\">url.item.tags</span> <span class=\"cp\">}}</span><span class=\"nt\">&lt;/news:keywords&gt;</span><span class=\"cp\">{%</span> <span class=\"k\">endif</span> <span class=\"cp\">%}</span>\n<span class=\"w\">    </span><span class=\"nt\">&lt;/news:news&gt;</span>\n<span class=\"w\">   </span><span class=\"nt\">&lt;/url&gt;</span>\n<span class=\"cp\">{%</span> <span class=\"k\">endfor</span> <span class=\"cp\">%}</span>\n<span class=\"cp\">{%</span> <span class=\"k\">endspaceless</span> <span class=\"cp\">%}</span>\n<span class=\"nt\">&lt;/urlset&gt;</span>\n</code></pre></div>\n</section>\n</section>\n<section id=\"pinging-google\">\n<h2>Signalement à Google<a class=\"heading-anchor\" href=\"#pinging-google\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Lorsqu’un plan de site change, il peut être souhaitable de le signaler à Google, afin qu’il sache qu’il doit réindexer le site. Le système sitemaps fournit une fonction pour faire exactement cela : <a class=\"reference internal\" href=\"#django.contrib.sitemaps.ping_google\" title=\"django.contrib.sitemaps.ping_google\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">django.contrib.sitemaps.ping_google()</span></code></a>.</p>\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.sitemaps.ping_google\">\n<span class=\"sig-name descname\"><span class=\"pre\">ping_google</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">sitemap_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\">ping_url</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">PING_URL</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">sitemap_uses_https</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">True</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.sitemaps.ping_google\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><code class=\"docutils literal notranslate\"><span class=\"pre\">ping_google</span></code> accepte ces paramètres facultatifs :</p>\n<ul class=\"simple\">\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">sitemap_url</span></code> - le chemin absolu vers le plan du site (par exemple, <code class=\"file docutils literal notranslate\"><span class=\"pre\">'/sitemap.xml'</span></code>). Si ce paramètre n’est pas fourni, <code class=\"docutils literal notranslate\"><span class=\"pre\">ping_google</span></code> tente de trouver lui-même le plan du site en effectuant une recherche inverse dans la configuration d’URL.</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">ping_url</span></code> - contient par défaut le lien vers l’outil de Ping de Google : <a class=\"reference external\" href=\"https://www.google.com/webmasters/tools/ping\">https://www.google.com/webmasters/tools/ping</a>.</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">sitemap_uses_https</span></code> - définissez-le à <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code> si votre site utilise <code class=\"docutils literal notranslate\"><span class=\"pre\">http</span></code> au lieu de <code class=\"docutils literal notranslate\"><span class=\"pre\">https</span></code>.</p></li>\n</ul>\n<p><a class=\"reference internal\" href=\"#django.contrib.sitemaps.ping_google\" title=\"django.contrib.sitemaps.ping_google\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">ping_google()</span></code></a> génère l’exception <code class=\"docutils literal notranslate\"><span class=\"pre\">django.contrib.sitemaps.SitemapNotFound</span></code> si elle ne peut pas déterminer l’URL du plan du site.</p>\n<aside class=\"version-note version-added\" data-version=\"2.2\">\n<p class=\"version-note-title\">New in Django 2.2</p><p>Le paramètre <code class=\"docutils literal notranslate\"><span class=\"pre\">sitemap_uses_https</span></code> a été ajouté. Les anciennes versions de Django utilisaient toujours <code class=\"docutils literal notranslate\"><span class=\"pre\">http</span></code> pour les URL d’un plan de site.</p>\n</aside>\n</dd></dl>\n\n<aside class=\"admonition-register-with-google-first admonition\">\n<p class=\"admonition-title\">Inscription préalable chez Google !</p>\n<p>La commande <a class=\"reference internal\" href=\"#django.contrib.sitemaps.ping_google\" title=\"django.contrib.sitemaps.ping_google\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">ping_google()</span></code></a> ne fonctionne que si vous avez inscrit le site avec <a class=\"reference external\" href=\"https://www.google.com/webmasters/tools/\">Google Webmaster Tools</a>.</p>\n</aside>\n<p>Une façon utile d’appeler <a class=\"reference internal\" href=\"#django.contrib.sitemaps.ping_google\" title=\"django.contrib.sitemaps.ping_google\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">ping_google()</span></code></a> est de le faire à partir de la méthode <code class=\"docutils literal notranslate\"><span class=\"pre\">save()</span></code> d’un modèle :</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.contrib.sitemaps</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">ping_google</span>\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">Entry</span><span class=\"p\">(</span><span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">Model</span><span class=\"p\">):</span>\n    <span class=\"c1\"># ...</span>\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">save</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">force_insert</span><span class=\"o\">=</span><span class=\"kc\">False</span><span class=\"p\">,</span> <span class=\"n\">force_update</span><span class=\"o\">=</span><span class=\"kc\">False</span><span class=\"p\">):</span>\n        <span class=\"nb\">super</span><span class=\"p\">()</span><span class=\"o\">.</span><span class=\"n\">save</span><span class=\"p\">(</span><span class=\"n\">force_insert</span><span class=\"p\">,</span> <span class=\"n\">force_update</span><span class=\"p\">)</span>\n        <span class=\"k\">try</span><span class=\"p\">:</span>\n            <span class=\"n\">ping_google</span><span class=\"p\">()</span>\n        <span class=\"k\">except</span> <span class=\"ne\">Exception</span><span class=\"p\">:</span>\n            <span class=\"c1\"># Bare &#39;except&#39; because we could get a variety</span>\n            <span class=\"c1\"># of HTTP-related exceptions.</span>\n            <span class=\"k\">pass</span>\n</code></pre></div>\n<p>Toutefois, une solution plus efficace serait d’appeler <a class=\"reference internal\" href=\"#django.contrib.sitemaps.ping_google\" title=\"django.contrib.sitemaps.ping_google\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">ping_google()</span></code></a> à partir d’un script cron ou de tout autre tâche planifiée. La fonction effectue une requête HTTP vers les serveurs de Google, il n’est donc pas forcément souhaitable d’introduire cette charge réseau chaque fois que <code class=\"docutils literal notranslate\"><span class=\"pre\">save()</span></code> est appelée.</p>\n<section id=\"pinging-google-via-manage-py\">\n<h3>Signalement à Google via <code class=\"docutils literal notranslate\"><span class=\"pre\">manage.py</span></code><a class=\"heading-anchor\" href=\"#pinging-google-via-manage-py\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"std django-admin\">\n<dt class=\"sig sig-object std\" id=\"django-admin-ping_google\">\n<span class=\"sig-name descname\"><span class=\"pre\">django-admin</span> <span class=\"pre\">ping_google</span> <span class=\"pre\">[sitemap_url]</span></span><a class=\"heading-anchor\" href=\"#django-admin-ping_google\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Une fois l’application sitemaps ajoutée à un projet, il est aussi possible de prévenir Google en utilisant la commande de gestion <code class=\"docutils literal notranslate\"><span class=\"pre\">ping_google</span></code>:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"n\">python</span> <span class=\"n\">manage</span><span class=\"o\">.</span><span class=\"n\">py</span> <span class=\"n\">ping_google</span> <span class=\"p\">[</span><span class=\"o\">/</span><span class=\"n\">sitemap</span><span class=\"o\">.</span><span class=\"n\">xml</span><span class=\"p\">]</span>\n</code></pre></div>\n<dl class=\"django-admin-option\">\n<dt class=\"sig sig-object\" id=\"cmdoption-ping_google-sitemap-uses-http\">\n<span class=\"sig-name descname\"><span class=\"pre\">--sitemap-uses-http</span></span><span class=\"sig-prename descclassname\"></span><a class=\"heading-anchor\" href=\"#cmdoption-ping_google-sitemap-uses-http\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<aside class=\"version-note version-added\" data-version=\"2.2\">\n<p class=\"version-note-title\">New in Django 2.2</p></aside>\n<p>Utilisez cette option si votre plan de site utilise <code class=\"docutils literal notranslate\"><span class=\"pre\">http</span></code> au lieu de <code class=\"docutils literal notranslate\"><span class=\"pre\">https</span></code>.</p>\n</section>\n</section>","rootId":"module-django.contrib.sitemaps","toc":[{"title":"Aperçu","anchor":"overview","children":[]},{"title":"Installation","anchor":"installation","children":[]},{"title":"Initialisation","anchor":"initialization","children":[]},{"title":"Classes Sitemap","anchor":"sitemap-classes","children":[]},{"title":"Un exemple","anchor":"an-example","children":[]},{"title":"Référence de la classe Sitemap","anchor":"sitemap-class-reference","children":[]},{"title":"Raccourcis","anchor":"shortcuts","children":[{"title":"Exemple","anchor":"example","children":[]}]},{"title":"Plan de site pour les vues statiques","anchor":"sitemap-for-static-views","children":[]},{"title":"Création d’un index de plan de site","anchor":"creating-a-sitemap-index","children":[]},{"title":"Personnalisation de gabarit","anchor":"template-customization","children":[{"title":"Variables de contexte","anchor":"context-variables","children":[]},{"title":"Accueil","anchor":"index","children":[]},{"title":"Sitemap","anchor":"id1","children":[]}]},{"title":"Signalement à Google","anchor":"pinging-google","children":[{"title":"Signalement à Google via manage.py","anchor":"pinging-google-via-manage-py","children":[]}]}],"breadcrumbs":[{"docname":"ref/index","title":"Référence de l’API","url":"/fr/3.0/ref/"},{"docname":"ref/contrib/index","title":"Paquets contrib","url":"/fr/3.0/ref/contrib/"}],"prev":{"docname":"ref/contrib/redirects","title":"L’application de redirection","url":"/fr/3.0/ref/contrib/redirects/"},"next":{"docname":"ref/contrib/sites","title":"L’infrastructure des « sites »","url":"/fr/3.0/ref/contrib/sites/"},"formats":{"html":"/fr/3.0/ref/contrib/sitemaps/","markdown":"/fr/3.0/ref/contrib/sitemaps.md","json":"/fr/3.0/ref/contrib/sitemaps.json"},"source":"https://github.com/django/django/blob/stable/3.0.x/docs/ref/contrib/sitemaps.txt","official":"https://docs.djangoproject.com/fr/3.0/ref/contrib/sitemaps/","inVersions":["6.1","6.0","5.2","5.1","5.0","4.2","4.1","4.0","3.2","3.1","3.0","2.2","2.1","2.0","1.11","1.10","1.9"],"inLocales":["en","zh-hans","fr","ja","id","pt-br","ko","es","el","pl"]}