也许我不明白Sitemaps的目的,或者我不明白如何使用站点地图。现在我的站点地图包括所有“动态”创建的页面,如博客文章。但是如何添加像我的索引和联系页面这样的“静态”页面呢?或者这些观点不应该在站点地图中?我认为-all-页面应该在站点地图上。例如,我将如何包含此类视图
(r'^contact/', include('contact-recaptcha.urls')),
如果没有查询集?
供参考:http://docs.djangoproject.com/en/dev/ref/contrib/sitemaps/
提前致谢!
答案 0 :(得分:42)
另一个更简单的选择:
from django.core.urlresolvers import reverse
from django.contrib.sitemaps import Sitemap
class ViewSitemap(Sitemap):
"""Reverse 'static' views for XML sitemap."""
def items(self):
# Return list of url names for views to include in sitemap
return ['homepage', 'news_article_list', 'contact_page']
def location(self, item):
return reverse(item)
sitemaps = {'views': ViewSitemap}
我故意省略了lastmod
和changefreq
,因为指定错误/假设数据比不包含它更糟糕。
答案 1 :(得分:14)
我以这种方式处理它:
用于定义静态页面属性的抽象类。
class AbstractSitemapClass():
changefreq = 'daily'
url = None
def get_absolute_url(self):
return self.url
静态页面的sitemap类:
class StaticSitemap(Sitemap):
pages = {
'home':'/', #Add more static pages here like this 'example':'url_of_example',
'contact':'/contact/',
}
main_sitemaps = []
for page in pages.keys():
sitemap_class = AbstractSitemapClass()
sitemap_class.url = pages[page]
main_sitemaps.append(sitemap_class)
def items(self):
return self.main_sitemaps
lastmod = datetime.datetime(2010, 8, 31) #Enter the year,month, date you want in yout static page sitemap.
priority = 1
changefreq = "yearly"
在站点地图词典中使用此词汇在urls.py中使用:
sitemaps = {
'main':StaticSitemap,
'flatpages':MyFlatPageSitemap,
'model':PostSitemap,
}