【问题标题】:How to join wagtail and django sitemaps?如何加入 wagtail 和 django 站点地图?
【发布时间】:2017-06-21 16:01:03
【问题描述】:

我在我的 Django 项目中使用 wagtail 应用程序。是否可以将 django 站点地图 (https://docs.djangoproject.com/en/1.11/ref/contrib/sitemaps/) 与 wagtail 站点地图 (wagtail.contrib.wagtailsitemaps) 一起加入?尝试使用 django 站点地图索引,但它只划分 django 站点地图,我如何包含 wagtail 站点地图?

【问题讨论】:

    标签: python django sitemap wagtail


    【解决方案1】:

    Wagtail 从 1.10 版开始使用 Django 站点地图框架。这应该允许您轻松地将常规 Django 站点地图与 Wagtail 站点地图结合起来。

    但是有一个小问题;因为 wagtail 支持多个站点,所以站点地图应该知道站点地图是为哪个站点生成的。出于这个原因,wagtail 提供了它自己的站点地图视图(索引和站点地图)。这些视图扩展了 Django 站点地图视图以传播站点对象。

    所以不要从 django 导入站点地图视图:

    from django.contrib.sitemaps import views as sitemap_views
    

    使用鹡鸰版本:

    from wagtail.contrib.wagtailsitemaps import views as sitemaps_views
    

    然后使用 Django 方法将 url 映射到视图:

    from wagtail.contrib.wagtailsitemaps import Sitemap
    urlpatterns = [
        # ...
        url(r'^sitemap\.xml$', sitemaps_views.index, {
            'sitemaps': {
                'pages': Sitemap
            },
            'sitemap_url_name': 'sitemap',
        }),
        url(r'^sitemap-(?P<section>.+)\.xml$', sitemaps_views.sitemap,
            name='sitemap'),
        # ...
    ]
    

    完整的例子你可以看测试中的代码:

    https://github.com/wagtail/wagtail/blob/911009473bc51e30ff751fda0ea5d2fa1d2b450f/wagtail/tests/urls.py#L36

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-23
      • 1970-01-01
      • 1970-01-01
      • 2021-10-10
      相关资源
      最近更新 更多