如何加入wagtail和django站点地图?

时间:2017-06-21 16:01:04

标签: python django sitemap wagtail

我在Django项目中使用了wagtail app。是否可以使用wagtail sitemaps(wagtail.contrib.wagtailsitemaps)加入django站点地图(https://docs.djangoproject.com/en/1.11/ref/contrib/sitemaps/)?尝试使用django站点地图索引,但它只划分django站点地图,我怎么能包含wagtail站点地图?

1 个答案:

答案 0 :(得分:4)

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

然而,有一小部分;因为wagtail支持多个站点,站点地图应该知道站点地图生成的站点。因此,wagtail提供了自己的站点地图视图(索引和站点地图)。这些视图扩展了Django站点地图视图,以便传播站点对象。

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

from django.contrib.sitemaps import views as sitemap_views

使用wagtail版本:

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