0

以下のようにDjangoで自分のウェブサイトのサイトマップを作成しました

サイトマップ

class MyModelSitemap(Sitemap):
    changefreq = "daily"
    priority = 0.5

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

    def lastmod(self, obj):
        return datetime.datetime.today()

urls.py

sitemaps = {
    'mymodel': MyModelSitemap,
    }

get_absolute_link()のためにも実装されていますMyModel

他にも多くの URL が使用MyModelされているため、1 つだけを使用することはできませんabsolute_link

のさまざまなクエリに応じて、サイトマップに他の多くの URL を提供する必要がありますMyModel

どうすればこれを達成できますか?

4

1 に答える 1

1

簡単な方法は、追加のサイトマップを作成することです:

class MyModelAdditionalLinkSitemap(MyModelSitemap):
    def location(self, obj):
        return obj.get_additional_link()

urls.py

sitemaps = {
    'mymodel': MyModelSitemap,
    'mymodel2': MyModelAdditionalLinkSitemap
}

追加した:

Sitemap1 つのクラスだけを使用したい場合は、次のようなものを試してください。

import itertools

class MyModelSitemap(Sitemap):
    changefreq = "daily"
    priority = 0.5

    def items(self):
        product = itertools.product(MyModel.objects.all(), xrange(2))
        return list(product)

    def location(self, obj):
        if (obj[1] == 1):
            return obj[0].get_additional_link()
        return obj[0].get_absolute_link()

    def lastmod(self, obj):
        return datetime.datetime.today()
于 2012-11-28T10:22:47.610 に答える