Django==2.2
Python==3.6
Вот лучший и простой способ использовать индекс карты сайта в Django, установить django.contrib.sitemaps
в проекте, добавив его в INSTALLED_APPS
из settings.py
. Напишите файл sitemaps.py в своих приложениях и определите нужные классы. Пример расширения django.contrib.sitemap.Sitemap
в классе карты сайта StaticViewSitemap
для статических URL-адресов, убедитесь, что ваш статический URL-адрес имеет имя для поиска reverse
(получение URL-адреса из имени URL-адреса)
# app/sitemap.py
from django.contrib import sitemaps
from django.urls import reverse
class StaticViewSitemap(sitemaps.Sitemap):
priority = 0.6
changefreq = 'monthly'
def items(self):
# URLs names
return ['index', 'aboutus', 'ourstory',]
def location(self, item):
return reverse(item)
Импортируйте все карты сайта в urls.py, импортируйте карту сайта и индекс из django.contrib.sitemaps.views
, затем создайте словарь с картами сайта.
# urls.py
from django.contrib.sitemaps.views import sitemap, index
from app.sitemaps import StaticViewSitemap
# add as many as sitemap you need as one key
sitemaps = {
"static" : StaticViewSitemap,
}
urlpatterns = [
# sitemap.xml index will have all sitemap-......xmls index
path('sitemap.xml', index, {'sitemaps': sitemaps}, name='django.contrib.sitemaps.views.index'),
# sitemap-<section>.xml here <section> will be replaced by the key from sitemaps dict
path('sitemap-<section>.xml', sitemap, {'sitemaps': sitemaps}, name='django.contrib.sitemaps.views.sitemap'),
]
Здесь у вас будет две карты сайта: 1. sitemaps.xml 2. sitemaps-static.xml Запустить URL-адрес открытия сервера: http://localhost:8000/sitemap.xml
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<sitemap>
<loc>http://127.0.0.1:8000/sitemap-static.xml</loc>
</sitemap>
</sitemapindex>
Django автоматически создал индекс карт сайта, теперь открытых URL: http://127.0.0.1:8000/sitemap-static.xml
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>http://localhost:8000/</loc>
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>http://localhost:8000/about-us</loc>
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>http://localhost:8000/our-story</loc>
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
</urlset>
person
itsmnthn
schedule
19.10.2019