django sitemap 框架

2016/6/26 posted in  python

sitemap的作用

通过这个站点可以查看一下自己网站的sitemap,从而可以查询到相关的浏览器索引项目http://www.sitemap-xml.org/

如果主页没有到index.html,而是跳转到其他的页面,可能2会出现无法索引的情况。

Sitemap 可方便网站管理员通知搜索引擎他们网站上有哪些可供抓取的网页。基本上所有的搜索引擎都集成了各自的sitemap爬取方式供浏览器来调用。每个公司也设置了自己的sitemap格式形式,但是基本还是类似的。

sitemap 的 django实现

在setting.py的INSTALLED_APPS 里面添加django.contrib.sitemaps

    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'django.contrib.sites',
        'django.contrib.sitemaps',
        'django_comments',
        'blog',
        'pagination',
        'tagging',
        'mshow',
        'pagedown',
        'markdown_deux',
    ]

修改相关的Templates配置

    TEMPLATES = [
        {
            'BACKEND': 'django.template.backends.django.DjangoTemplates',
            'DIRS': [os.path.join(BASE_DIR,'templates').replace('\\', '/'),],
            'APP_DIRS': True,
            'OPTIONS': {
                'context_processors': [
                    'django.template.context_processors.debug',
                    'django.template.context_processors.request',
                    'django.contrib.auth.context_processors.auth',
                    'django.contrib.messages.context_processors.messages',
                    'django.core.context_processors.debug',
                    'django.core.context_processors.i18n',
                    'django.core.context_processors.media',
                    'django.core.context_processors.request',
                ],
            },
        },
    ]

添加urls 到根目录以及相应的sitemaps

    sitemaps = {
        'blog': GenericSitemap({'queryset': Entry.objects.all(), 'date_field': 'publication_date'}, priority=0.6),
    }
    urlpatterns = [
        url(r'^$', views.blog, name="index"),
        url(r'^admin/', admin.site.urls),
        url(r'^mshow/', include('mshow.urls', namespace='mshow')),
        url(r'^blog/', include('blog.urls', namespace='blog')),
        url(r'^comments/', include('django_comments.urls')),
        url(r'^media/(?P<path>.*)$', 'django.views.static.serve',{'document_root': settings.MEDIA_ROOT}),
        url(r'^sitemap\.xml$', sitemap, {'sitemaps': sitemaps},name='django.contrib.sitemaps.views.sitemap'),
    ]

在models里面添加get_absolute_url,凡是需要形成sitemap的类都需要有这个项

    def get_absolute_url(self):
        return "/blog/single/%i/" % self.id

完成之后访问sitemap.xml就可以访问网站的sitemap了,后面还有一些其他功能等待补充。