sitemap 主要是描述了网站的结构, 使得搜索引擎更容易的理解网站得内容。

具体 sitemap 生成可以参考 sietmaps.org

Django sitemap 的建立:

  1. 在 setting.py 的 INSTALLED_APPS 中增加 'django.contrib.sitemaps'
  2. 在你的 TEMPLATE_LOADERS 中已经加载 'django.template.loaders.app_directories.Loader'
  3. 确定你已经安装了 site framework

    TEMPLATE_LOADERS = ( 'django.template.loaders.app_directories.Loader', )

    INSTALLED_APPS = { 'django.contrib.sitemaps', }

为你的站点建立 sitemap。架设你的站点是一个 blog 为主的网站,那么你需要在你的 views.py 中添加如下代码:

from django.contrib.sitemaps import Sitemap
from blog.models import Blog

class BlogSitemap(Sitemap):
    changefreq = 'hourly'
    priority = 0.5

    def items(self):
        return Blog.objects.all()

    def lastmod(self, obj):
        return obj.create_time

    def location(self, obj):
        return "/blog/%d" % obj.pk

注意:

  1. changefreq 和 priority 是 Sitemap 类的两个属性。 changefreq 是页面改变的频率。 priority 是优先级
  2. items() 是 sitemap 对象的列表
  3. lastmod 返回一个 Python datetime 对象
  4. location 可以制定对象的URI。默认 location() 调用 get_absolute_url()

最后在 urls.py 中加入如下代码:

sitemaps = {
    'blog': BlogSitemap,
}
urlpatterns += (
    url(r'sitemap\.xml$', 'django.contrib.sitemaps.views.sitemap', {'sitemaps':sitempas}),
)