如何在一个django应用程序中具有多个站点地图类?

问题描述 投票:0回答:1

我在Django'my_project'中有my_app。我的my_app中有两个模型

class Author(model):
    name = CharField(...)
    created_at = DateTimeField(auto_now_add=True, null=True)
    updated_at = DateTimeField(auto_now=True, null=True)

    def get_absolute_url()
        kwargs = {'author_pk': self.pk, }
        return reverse('author', kwargs=kwargs)


class Post(model):
    title = CharField(...)
    author = ForeignKey(Author, ...)
    created_at = DateTimeField(auto_now_add=True, null=True)
    updated_at = DateTimeField(auto_now=True, null=True)

    def get_absolute_url()
        kwargs = {'author_pk': slef.author.pk, 'post_pk': self.pk, }
        return reverse('author', kwargs=kwargs)

我在my_app文件夹中有一个文件名站点地图,如下所示:

class AuthorSitemap(Sitemap):
    changefreq = "monthly"
    priority = 0.9

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

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


class PostSitemap(Sitemap):
    changefreq = "monthly"
    priority = 0.9

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

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

在urls文件的my_project文件夹中,我有这个:

sitemaps = {
    'my_app': PartnerSitemap, 'my_app': PartnerBlogPostSitemap,
}

urlpatterns = [
    ...
    ...
    path('sitemap.xml', sitemap, {'sitemaps': sitemaps}, name='django.contrib.sitemaps.views.sitemap'),

]

如您所见,我有一本字典,其中有两个具有相同键的项。我将其更改如下。它仍然不起作用:

sitemaps = {
    'my_app': [PartnerSitemap, PartnerBlogPostSitemap, ]
}

我应该如何使其起作用?

django sitemap
1个回答
0
投票

以这种方式工作:

sitemaps = {
    'my_app1': PartnerSitemap
    'my_app2', PartnerBlogPostSitemap, 
}
© www.soinside.com 2019 - 2024. All rights reserved.