{"title":"The sitemap framework","version":"1.10","locale":"el","docname":"ref/contrib/sitemaps","url":"/el/1.10/ref/contrib/sitemaps/","canonical":"https://djangodocs.dev/el/1.10/ref/contrib/sitemaps/","summary":"Django comes with a high-level sitemap-generating framework that makes creating sitemap XML files easy. Overview Link to this heading # A sitemap is an XML file on…","html":"<span id=\"the-sitemap-framework\"></span><h1>The sitemap framework<a class=\"heading-anchor\" href=\"#module-django.contrib.sitemaps\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>Django comes with a high-level sitemap-generating framework that makes\ncreating <a class=\"reference external\" href=\"http://www.sitemaps.org/\">sitemap</a> XML files easy.</p>\n<section id=\"overview\">\n<h2>Overview<a class=\"heading-anchor\" href=\"#overview\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>A sitemap is an XML file on your website that tells search-engine indexers how\nfrequently your pages change and how «important» certain pages are in relation\nto other pages on your site. This information helps search engines index your\nsite.</p>\n<p>The Django sitemap framework automates the creation of this XML file by letting\nyou express this information in Python code.</p>\n<p>It works much like Django’s <a class=\"reference internal\" href=\"/el/1.10/ref/contrib/syndication/\"><span class=\"doc\">syndication framework</span></a>. To create a sitemap, just write a\n<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> class and point to it in your\n<a class=\"reference internal\" href=\"/el/1.10/topics/http/urls/\"><span class=\"doc\">URLconf</span></a>.</p>\n</section>\n<section id=\"installation\">\n<h2>Installation<a class=\"heading-anchor\" href=\"#installation\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>To install the sitemap app, follow these steps:</p>\n<ol class=\"arabic simple\">\n<li><p>Add <code class=\"docutils literal notranslate\"><span class=\"pre\">'django.contrib.sitemaps'</span></code> to your <a class=\"reference internal\" href=\"/el/1.10/ref/settings/#std-setting-INSTALLED_APPS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">INSTALLED_APPS</span></code></a>\nsetting.</p></li>\n<li><p>Make sure your <a class=\"reference internal\" href=\"/el/1.10/ref/settings/#std-setting-TEMPLATES\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">TEMPLATES</span></code></a> setting contains a <code class=\"docutils literal notranslate\"><span class=\"pre\">DjangoTemplates</span></code>\nbackend whose <code class=\"docutils literal notranslate\"><span class=\"pre\">APP_DIRS</span></code> options is set to <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>. It’s in there by\ndefault, so you’ll only need to change this if you’ve changed that setting.</p></li>\n<li><p>Make sure you’ve installed the\n<a class=\"reference internal\" href=\"/el/1.10/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\">sites</span> <span class=\"pre\">framework</span></code></a>.</p></li>\n</ol>\n<p>(Note: The sitemap application doesn’t install any database tables. The only\nreason it needs to go into <a class=\"reference internal\" href=\"/el/1.10/ref/settings/#std-setting-INSTALLED_APPS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">INSTALLED_APPS</span></code></a> is so that the\n<a class=\"reference internal\" href=\"/el/1.10/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> template\nloader can find the default templates.)</p>\n</section>\n<section id=\"initialization\">\n<h2>Initialization<a class=\"heading-anchor\" href=\"#initialization\"><span class=\"visually-hidden\">Link to this heading</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\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>To activate sitemap generation on your Django site, add this line to your\n<a class=\"reference internal\" href=\"/el/1.10/topics/http/urls/\"><span class=\"doc\">URLconf</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\">url</span><span class=\"p\">(</span><span class=\"sa\">r</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>This tells Django to build a sitemap when a client accesses <code class=\"file docutils literal notranslate\"><span class=\"pre\">/sitemap.xml</span></code>.</p>\n<p>The name of the sitemap file is not important, but the location is. Search\nengines will only index links in your sitemap for the current URL level and\nbelow. For instance, if <code class=\"file docutils literal notranslate\"><span class=\"pre\">sitemap.xml</span></code> lives in your root directory, it may\nreference any URL in your site. However, if your sitemap lives at\n<code class=\"file docutils literal notranslate\"><span class=\"pre\">/content/sitemap.xml</span></code>, it may only reference URLs that begin with\n<code class=\"file docutils literal notranslate\"><span class=\"pre\">/content/</span></code>.</p>\n<p>The sitemap view takes an extra, required argument: <code class=\"docutils literal notranslate\"><span class=\"pre\">{'sitemaps':</span> <span class=\"pre\">sitemaps}</span></code>.\n<code class=\"docutils literal notranslate\"><span class=\"pre\">sitemaps</span></code> should be a dictionary that maps a short section label (e.g.,\n<code class=\"docutils literal notranslate\"><span class=\"pre\">blog</span></code> or <code class=\"docutils literal notranslate\"><span class=\"pre\">news</span></code>) to its <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> class\n(e.g., <code class=\"docutils literal notranslate\"><span class=\"pre\">BlogSitemap</span></code> or <code class=\"docutils literal notranslate\"><span class=\"pre\">NewsSitemap</span></code>). It may also map to an <em>instance</em> of\na <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> class (e.g.,\n<code class=\"docutils literal notranslate\"><span class=\"pre\">BlogSitemap(some_var)</span></code>).</p>\n</section>\n<section id=\"sitemap-classes\">\n<h2><code class=\"docutils literal notranslate\"><span class=\"pre\">Sitemap</span></code> classes<a class=\"heading-anchor\" href=\"#sitemap-classes\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>A <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> class is a simple Python\nclass that represents a «section» of entries in your sitemap. For example,\none <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> class could represent\nall the entries of your Weblog, while another could represent all of the\nevents in your events calendar.</p>\n<p>In the simplest case, all these sections get lumped together into one\n<code class=\"file docutils literal notranslate\"><span class=\"pre\">sitemap.xml</span></code>, but it’s also possible to use the framework to generate a\nsitemap index that references individual sitemap files, one per section. (See\n<a class=\"reference internal\" href=\"#creating-a-sitemap-index\">Creating a sitemap index</a> below.)</p>\n<p><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> classes must subclass\n<code class=\"docutils literal notranslate\"><span class=\"pre\">django.contrib.sitemaps.Sitemap</span></code>. They can live anywhere in your codebase.</p>\n</section>\n<section id=\"a-simple-example\">\n<h2>A simple example<a class=\"heading-anchor\" href=\"#a-simple-example\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Let’s assume you have a blog system, with an <code class=\"docutils literal notranslate\"><span class=\"pre\">Entry</span></code> model, and you want your\nsitemap to include all the links to your individual blog entries. Here’s how\nyour sitemap class might look:</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>Note:</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> and <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> are class\nattributes corresponding to <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;changefreq&gt;</span></code> and <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;priority&gt;</span></code> elements,\nrespectively. They can be made callable as functions, as\n<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> was in the example.</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> is simply a method that returns a list of\nobjects. The objects returned will get passed to any callable methods\ncorresponding to a sitemap property (<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<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>, and\n<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> should return a <a class=\"reference external\" href=\"https://docs.python.org/3/library/datetime.html#datetime.datetime\" title=\"(στη Python έκδοση 3.14)\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">datetime</span></code></a>.</p></li>\n<li><p>There is no <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> method in this example, but you\ncan provide it in order to specify the URL for your object. By default,\n<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> calls <code class=\"docutils literal notranslate\"><span class=\"pre\">get_absolute_url()</span></code> on each object\nand returns the result.</p></li>\n</ul>\n</section>\n<section id=\"sitemap-class-reference\">\n<h2><code class=\"docutils literal notranslate\"><span class=\"pre\">Sitemap</span></code> class reference<a class=\"heading-anchor\" href=\"#sitemap-class-reference\"><span class=\"visually-hidden\">Link to this heading</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\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>A <code class=\"docutils literal notranslate\"><span class=\"pre\">Sitemap</span></code> class can define the following methods/attributes:</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\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><strong>Required.</strong> A method that returns a list of objects. The framework\ndoesn’t care what <em>type</em> of objects they are; all that matters is that\nthese objects get passed to the <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<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> and\n<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> methods.</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\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><strong>Optional.</strong> Either a method or attribute.</p>\n<p>If it’s a method, it should return the absolute path for a given object\nas returned by <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>If it’s an attribute, its value should be a string representing an\nabsolute path to use for <em>every</em> object returned by\n<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>In both cases, «absolute path» means a URL that doesn’t include the\nprotocol or domain. Examples:</p>\n<ul class=\"simple\">\n<li><p>Good: <code class=\"file docutils literal notranslate\"><span class=\"pre\">'/foo/bar/'</span></code></p></li>\n<li><p>Bad: <code class=\"file docutils literal notranslate\"><span class=\"pre\">'example.com/foo/bar/'</span></code></p></li>\n<li><p>Bad: <code class=\"file docutils literal notranslate\"><span class=\"pre\">'https://example.com/foo/bar/'</span></code></p></li>\n</ul>\n<p>If <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> isn’t provided, the framework will call\nthe <code class=\"docutils literal notranslate\"><span class=\"pre\">get_absolute_url()</span></code> method on each object as returned by\n<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>To specify a protocol other than <code class=\"docutils literal notranslate\"><span class=\"pre\">'http'</span></code>, use\n<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\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><strong>Optional.</strong> Either a method or attribute.</p>\n<p>If it’s a method, it should take one argument – an object as returned\nby <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> – and return that object’s last-modified\ndate/time as a <a class=\"reference external\" href=\"https://docs.python.org/3/library/datetime.html#datetime.datetime\" title=\"(στη Python έκδοση 3.14)\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">datetime</span></code></a>.</p>\n<p>If it’s an attribute, its value should be a <a class=\"reference external\" href=\"https://docs.python.org/3/library/datetime.html#datetime.datetime\" title=\"(στη Python έκδοση 3.14)\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">datetime</span></code></a>\nrepresenting the last-modified date/time for <em>every</em> object returned by\n<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>If all items in a sitemap have 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>, the sitemap\ngenerated by <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> will have a <code class=\"docutils literal notranslate\"><span class=\"pre\">Last-Modified</span></code>\nheader equal to the latest <code class=\"docutils literal notranslate\"><span class=\"pre\">lastmod</span></code>. You can activate the\n<a class=\"reference internal\" href=\"/el/1.10/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> to make\nDjango respond appropriately to requests with an <code class=\"docutils literal notranslate\"><span class=\"pre\">If-Modified-Since</span></code>\nheader which will prevent sending the sitemap if it hasn’t changed.</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\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><strong>Optional.</strong> Either a method or attribute.</p>\n<p>If it’s a method, it should take one argument – an object as returned\nby <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> – and return that object’s change\nfrequency as a string.</p>\n<p>If it’s an attribute, its value should be a string representing the\nchange frequency of <em>every</em> object returned by <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>Possible values for <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>, whether you use a\nmethod or attribute, are:</p>\n<ul class=\"simple\">\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">'always'</span></code></p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">'hourly'</span></code></p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">'daily'</span></code></p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">'weekly'</span></code></p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">'monthly'</span></code></p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">'yearly'</span></code></p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">'never'</span></code></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\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><strong>Optional.</strong> Either a method or attribute.</p>\n<p>If it’s a method, it should take one argument – an object as returned\nby <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> – and return that object’s priority as\neither a string or float.</p>\n<p>If it’s an attribute, its value should be either a string or float\nrepresenting the priority of <em>every</em> object returned by\n<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>Example values for <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>. The\ndefault priority of a page is <code class=\"docutils literal notranslate\"><span class=\"pre\">0.5</span></code>. See the <a class=\"reference external\" href=\"http://www.sitemaps.org/protocol.html#prioritydef\">sitemaps.org\ndocumentation</a> for more.</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\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><strong>Optional.</strong></p>\n<p>This attribute defines the protocol (<code class=\"docutils literal notranslate\"><span class=\"pre\">'http'</span></code> or <code class=\"docutils literal notranslate\"><span class=\"pre\">'https'</span></code>) of the\nURLs in the sitemap. If it isn’t set, the protocol with which the\nsitemap was requested is used. If the sitemap is built outside the\ncontext of a request, the default is <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\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><strong>Optional.</strong></p>\n<p>This attribute defines the maximum number of URLs included on each page\nof the sitemap. Its value should not exceed the default value of\n<code class=\"docutils literal notranslate\"><span class=\"pre\">50000</span></code>, which is the upper limit allowed in the <a class=\"reference external\" href=\"http://www.sitemaps.org/protocol.html#index\">Sitemaps protocol</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\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><strong>Optional.</strong></p>\n<p>A boolean attribute that defines if the URLs of this sitemap should\nbe generated using all of your <a class=\"reference internal\" href=\"/el/1.10/ref/settings/#std-setting-LANGUAGES\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">LANGUAGES</span></code></a>. The default is\n<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>Shortcuts<a class=\"heading-anchor\" href=\"#shortcuts\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>The sitemap framework provides a convenience class for a common case:</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><a class=\"heading-anchor\" href=\"#django.contrib.sitemaps.GenericSitemap\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>The <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> class allows you to\ncreate a sitemap by passing it a dictionary which has to contain at least\na <code class=\"docutils literal notranslate\"><span class=\"pre\">queryset</span></code> entry. This queryset will be used to generate the items\nof the sitemap. It may also have a <code class=\"docutils literal notranslate\"><span class=\"pre\">date_field</span></code> entry that\nspecifies a date field for objects retrieved from the <code class=\"docutils literal notranslate\"><span class=\"pre\">queryset</span></code>.\nThis will be used for the <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> attribute in the\ngenerated sitemap. You may also pass <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> and\n<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> keyword arguments to the\n<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>  constructor to specify\nthese attributes for all URLs.</p>\n</dd></dl>\n\n<section id=\"example\">\n<h3>Example<a class=\"heading-anchor\" href=\"#example\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Here’s an example of a <a class=\"reference internal\" href=\"/el/1.10/topics/http/urls/\"><span class=\"doc\">URLconf</span></a> using\n<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.conf.urls</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">url</span>\n<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\">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\">url</span><span class=\"p\">(</span><span class=\"sa\">r</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>Sitemap for static views<a class=\"heading-anchor\" href=\"#sitemap-for-static-views\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Often you want the search engine crawlers to index views which are neither\nobject detail pages nor flatpages. The solution is to explicitly list URL\nnames for these views in <code class=\"docutils literal notranslate\"><span class=\"pre\">items</span></code> and call <a class=\"reference internal\" href=\"/el/1.10/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> in\nthe <code class=\"docutils literal notranslate\"><span class=\"pre\">location</span></code> method of the sitemap. For example:</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.conf.urls</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">url</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\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\">url</span><span class=\"p\">(</span><span class=\"sa\">r</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\">url</span><span class=\"p\">(</span><span class=\"sa\">r</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\">url</span><span class=\"p\">(</span><span class=\"sa\">r</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\">url</span><span class=\"p\">(</span><span class=\"sa\">r</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>Creating a sitemap index<a class=\"heading-anchor\" href=\"#creating-a-sitemap-index\"><span class=\"visually-hidden\">Link to this heading</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\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>The sitemap framework also has the ability to create a sitemap index that\nreferences individual sitemap files, one per each section defined in your\n<code class=\"docutils literal notranslate\"><span class=\"pre\">sitemaps</span></code> dictionary. The only differences in usage are:</p>\n<ul class=\"simple\">\n<li><p>You use two views in your URLconf: <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>\nand <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>The <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> view should take a\n<code class=\"docutils literal notranslate\"><span class=\"pre\">section</span></code> keyword argument.</p></li>\n</ul>\n<p>Here’s what the relevant URLconf lines would look like for the example above:</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\">url</span><span class=\"p\">(</span><span class=\"sa\">r</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\">url</span><span class=\"p\">(</span><span class=\"sa\">r</span><span class=\"s1\">&#39;^sitemap-(?P&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>This will automatically generate a <code class=\"file docutils literal notranslate\"><span class=\"pre\">sitemap.xml</span></code> file that references\nboth <code class=\"file docutils literal notranslate\"><span class=\"pre\">sitemap-flatpages.xml</span></code> and <code class=\"file docutils literal notranslate\"><span class=\"pre\">sitemap-blog.xml</span></code>. The\n<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> classes and the <code class=\"docutils literal notranslate\"><span class=\"pre\">sitemaps</span></code>\ndict don’t change at all.</p>\n<p>You should create an index file if one of your sitemaps has more than 50,000\nURLs. In this case, Django will automatically paginate the sitemap, and the\nindex will reflect that.</p>\n<p>If you’re not using the vanilla sitemap view – for example, if it’s wrapped\nwith a caching decorator – you must name your sitemap view and pass\n<code class=\"docutils literal notranslate\"><span class=\"pre\">sitemap_url_name</span></code> to the index view:</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\">url</span><span class=\"p\">(</span><span class=\"sa\">r</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\">url</span><span class=\"p\">(</span><span class=\"sa\">r</span><span class=\"s1\">&#39;^sitemap-(?P&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>Template customization<a class=\"heading-anchor\" href=\"#template-customization\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>If you wish to use a different template for each sitemap or sitemap index\navailable on your site, you may specify it by passing a <code class=\"docutils literal notranslate\"><span class=\"pre\">template_name</span></code>\nparameter to the <code class=\"docutils literal notranslate\"><span class=\"pre\">sitemap</span></code> and <code class=\"docutils literal notranslate\"><span class=\"pre\">index</span></code> views via the URLconf:</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\">url</span><span class=\"p\">(</span><span class=\"sa\">r</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\">url</span><span class=\"p\">(</span><span class=\"sa\">r</span><span class=\"s1\">&#39;^custom-sitemap-(?P&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>These views return <a class=\"reference internal\" href=\"/el/1.10/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>\ninstances which allow you to easily customize the response data before\nrendering. For more details, see the <a class=\"reference internal\" href=\"/el/1.10/ref/template-response/\"><span class=\"doc\">TemplateResponse documentation</span></a>.</p>\n<section id=\"context-variables\">\n<h3>Context variables<a class=\"heading-anchor\" href=\"#context-variables\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>When customizing the templates for the\n<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> and\n<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> views, you can rely on the\nfollowing context variables.</p>\n</section>\n<section id=\"index\">\n<h3>Index<a class=\"heading-anchor\" href=\"#index\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>The variable <code class=\"docutils literal notranslate\"><span class=\"pre\">sitemaps</span></code> is a list of absolute URLs to each of the sitemaps.</p>\n</section>\n<section id=\"id1\">\n<h3>Sitemap<a class=\"heading-anchor\" href=\"#id1\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>The variable <code class=\"docutils literal notranslate\"><span class=\"pre\">urlset</span></code> is a list of URLs that should appear in the\nsitemap. Each URL exposes attributes as defined in the\n<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> class:</p>\n<ul class=\"simple\">\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">changefreq</span></code></p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">item</span></code></p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">lastmod</span></code></p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">location</span></code></p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">priority</span></code></p></li>\n</ul>\n<p>The <code class=\"docutils literal notranslate\"><span class=\"pre\">item</span></code> attribute has been added for each URL to allow more flexible\ncustomization of the templates, such as <a class=\"reference external\" href=\"https://support.google.com/news/publisher/answer/74288?hl=en\">Google news sitemaps</a>. Assuming\nSitemap’s <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> would return a list of items with\n<code class=\"docutils literal notranslate\"><span class=\"pre\">publication_data</span></code> and a <code class=\"docutils literal notranslate\"><span class=\"pre\">tags</span></code> field something like this would\ngenerate a Google News compatible sitemap:</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;http://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>Pinging Google<a class=\"heading-anchor\" href=\"#pinging-google\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>You may want to «ping» Google when your sitemap changes, to let it know to\nreindex your site. The sitemaps framework provides a function to do just\nthat: <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><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.sitemaps.ping_google\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><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> takes an optional argument, <code class=\"docutils literal notranslate\"><span class=\"pre\">sitemap_url</span></code>,\nwhich should be the absolute path to your site’s sitemap (e.g.,\n<code class=\"file docutils literal notranslate\"><span class=\"pre\">'/sitemap.xml'</span></code>). If this argument isn’t provided,\n<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> will attempt to figure out your\nsitemap by performing a reverse looking in your URLconf.</p>\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> raises the exception\n<code class=\"docutils literal notranslate\"><span class=\"pre\">django.contrib.sitemaps.SitemapNotFound</span></code> if it cannot determine your\nsitemap URL.</p>\n</dd></dl>\n\n<aside class=\"admonition-register-with-google-first admonition\">\n<p class=\"admonition-title\">Register with Google first!</p>\n<p>The <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> command only works if you have registered your\nsite with <a class=\"reference external\" href=\"https://www.google.com/webmasters/tools/\">Google Webmaster Tools</a>.</p>\n</aside>\n<p>One useful way to call <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> is from a model’s <code class=\"docutils literal notranslate\"><span class=\"pre\">save()</span></code>\nmethod:</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=\"n\">Entry</span><span class=\"p\">,</span> <span class=\"bp\">self</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>A more efficient solution, however, would be to call <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> from a\ncron script, or some other scheduled task. The function makes an HTTP request\nto Google’s servers, so you may not want to introduce that network overhead\neach time you call <code class=\"docutils literal notranslate\"><span class=\"pre\">save()</span></code>.</p>\n<section id=\"pinging-google-via-manage-py\">\n<h3>Pinging 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\">Link to this heading</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\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Once the sitemaps application is added to your project, you may also\nping Google using the <code class=\"docutils literal notranslate\"><span class=\"pre\">ping_google</span></code> management command:</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</section>\n</section>","rootId":"module-django.contrib.sitemaps","toc":[{"title":"Overview","anchor":"overview","children":[]},{"title":"Installation","anchor":"installation","children":[]},{"title":"Initialization","anchor":"initialization","children":[]},{"title":"Sitemap classes","anchor":"sitemap-classes","children":[]},{"title":"A simple example","anchor":"a-simple-example","children":[]},{"title":"Sitemap class reference","anchor":"sitemap-class-reference","children":[]},{"title":"Shortcuts","anchor":"shortcuts","children":[{"title":"Example","anchor":"example","children":[]}]},{"title":"Sitemap for static views","anchor":"sitemap-for-static-views","children":[]},{"title":"Creating a sitemap index","anchor":"creating-a-sitemap-index","children":[]},{"title":"Template customization","anchor":"template-customization","children":[{"title":"Context variables","anchor":"context-variables","children":[]},{"title":"Index","anchor":"index","children":[]},{"title":"Sitemap","anchor":"id1","children":[]}]},{"title":"Pinging Google","anchor":"pinging-google","children":[{"title":"Pinging Google via manage.py","anchor":"pinging-google-via-manage-py","children":[]}]}],"breadcrumbs":[{"docname":"ref/index","title":"API Reference","url":"/el/1.10/ref/"},{"docname":"ref/contrib/index","title":"contrib packages","url":"/el/1.10/ref/contrib/"}],"prev":{"docname":"ref/contrib/redirects","title":"The redirects app","url":"/el/1.10/ref/contrib/redirects/"},"next":{"docname":"ref/contrib/sites","title":"The «sites» framework","url":"/el/1.10/ref/contrib/sites/"},"formats":{"html":"/el/1.10/ref/contrib/sitemaps/","markdown":"/el/1.10/ref/contrib/sitemaps.md","json":"/el/1.10/ref/contrib/sitemaps.json"},"source":"https://github.com/django/django/blob/stable/1.10.x/docs/ref/contrib/sitemaps.txt","official":"https://docs.djangoproject.com/el/1.10/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"],"inLocales":["en","fr","ja","id","pt-br","es","el","pl"]}