Памятка для себя, а так же может быть будет полезна новичкам в Django. Сразу к делу:
- для начала в
settings.pyдобавляется'django.contrib.sitemaps', в разделINSTALLED_APPS django.template.loaders.app_directories.Loaderдолжен быть вTEMPLATE_LOADERS(он там по умолчанию, если не менялось)- должен быть установлен
sites framework, если не вдаваться в подробности делается это путем добавления'django.contrib.sites'вINSTALLED_APPSи установкой переменнойSITE_ID = 1вsettings.py
С установкой все. Теперь нужно создать файл sitemaps.py:
from django.contrib.sitemaps import Sitemap
from article.models import Article
from django.core.urlresolvers import reverse
class ArticleSitemap(Sitemap):
changefreq = "daily"
priority = 0.5
def items(self):
return Article.objects.filter(displayable=True)
def lastmod(self, obj):
return obj.date
def location(self, obj):
return obj.slug
class StaticViewSitemap(Sitemap):
priority = 0.5
changefreq = 'daily'
def items(self):
return ['index']
def location(self, item):
return reverse(item)
Класс ArticleSitemap - для создания ссылок на статьи - это экземпляры класса Article. Класс StaticViewSitemap - для отображения ссылок на статические страницы, например в функции items возвращается список из имен статических страниц (index - корневая страница). В urls.py для этого нужно указать имя, в данном случае url(r'^$', 'main_blog.views.index', name='index')
Так же нужно добавить информацию в urls.py:
...
from django.contrib.sitemaps.views import sitemap
from my_blog.sitemaps import ArticleSitemap, StaticViewSitemap
...
sitemaps = {
'articles': ArticleSitemap,
'static': StaticViewSitemap,
}
...
urlpatterns = patterns('',
url(r'^$', 'main_blog.views.index', name='index'),
...
url(r'^sitemap\.xml$', sitemap, {'sitemaps': sitemaps},
name='django.contrib.sitemaps.views.sitemap')
)
Вроде бы ничего не забыл. Теперь можно зайти по http://example.com/sitemap.xml и посмотреть что получилось.
Хочу рассказать о, как мне кажется, не совсем правильной политике к...
