【问题标题】:How do you create a sitemap index in Django?如何在 Django 中创建站点地图索引?
【发布时间】:2017-06-16 06:33:16
【问题描述】:

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'),

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

非常感谢任何帮助!

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

【问题讨论】:

    标签: python django sitemap


    【解决方案1】:

    如果您使用命名空间包含应用程序(例如include('myapp.urls', namespace='myapp'),那么您需要在反转时包含命名空间,例如{ % url 'myapp:my_url_name' %}reverse('myapp:my_url_name')

    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'}),
    

    注意:posts:sitemapsname 是我的应用程序

    查看 Django 源代码:https://github.com/django/django/blob/master/django/contrib/sitemaps/views.py

    【讨论】:

      【解决方案2】:

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

      urls.py

      from .views import StaticSitemap, BlogSitemap, NewsSitemap
      
      SITEMAPS = {
          'blog': BlogSitemap,
          'main': StaticSitemap,
          'news': NewsSitemap,
      } 
      

      这些将在您的 中显示为 sitemap-blog.xmlsitemap-main.xmlsitemap-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 中有一个默认值将被使用。它应该只是自动工作。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-10-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-25
        • 1970-01-01
        • 2017-07-19
        • 2019-09-09
        相关资源
        最近更新 更多