如何在Django中创建站点地图索引?

时间:2017-01-30 23:17:47

标签: python django sitemap

Django documentation非常小,我似乎无法让它发挥作用。

目前我有3个单独的站点地图,我想为他们创建一个站点地图索引:

(r'^sitemap1\.xml$', 'django.contrib.sitemaps.views.sitemap', {'sitemaps':sitemap1}),
(r'^sitemap2\.xml$', 'django.contrib.sitemaps.views.sitemap', {'sitemaps':sitemap2}),
(r'^sitemap3\.xml$', 'django.contrib.sitemaps.views.sitemap', {'sitemaps':sitemap3}),

Django文档提到了添加以下内容:

url(r'^sitemap-(?P<section>.+)\.xml$', views.sitemap, {'sitemaps': sitemaps},name='django.contrib.sitemaps.views.sitemap'),

在这种情况下,“部分”是什么?我如何访问此索引文件?可以下载还是可以通过网址访问?

非常感谢任何帮助!

修改 基本上我想在Django中完成这个:https://support.google.com/webmasters/answer/75712

2 个答案:

答案 0 :(得分:1)

如果您在应用中添加了命名空间(例如 include(&#39; myapp.urls&#39;,namespace =&#39; myapp&#39; ),那么您需要包含倒退时的命名空间,例如 {%url&#39; myapp:my_url_name&#39;%} 反向(&#39; myapp:my_url_name&#39;)

url(r'^sitemap-(?P<section>.+)\.xml$', cache_page(86400)(views.sitemap), {'sitemaps': sitemaps}, name='sitemapsname'),
url(r'^sitemap\.xml$', cache_page(86400)(views.index), {'sitemaps': sitemaps, 'sitemap_url_name': 'posts:sitemapsname'}),

注意:帖子:sitemapsname是我的应用

请参阅Django的源代码:https://github.com/django/django/blob/master/django/contrib/sitemaps/views.py

答案 1 :(得分:0)

“部分”是您在字典中定义的内容,如下所示:

<强> urls.py

from .views import StaticSitemap, BlogSitemap, NewsSitemap

SITEMAPS = {
    'blog': BlogSitemap,
    'main': StaticSitemap,
    'news': NewsSitemap,
} 

这些将在您的 sitemap-blog.xml , sitemap-main.xml sitemap-news.xml > sitemap.xml 索引。

这些内容在 views.py 中列出,例如:

class BlogSitemap(Sitemap):
    changefreq = "never"
    priority = 0.5

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

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

    def location(self, obj):
        return obj.url

您不需要访问索引文件,因为Django中将使用默认值。它应该自动工作。