django网站地图中的项目列表如何具有不同的更改频率和优先级?

问题描述

我在django项目中建立了一个静态站点地图,如下所示:

class StaticViewSitemap(Sitemap):
    changefreq = "weekly"
    priority = 0.9
    protocol = 'http' if DEBUG else 'https'

    def items(self):
        return ['home','contact_us','blog',]

    def location(self,item):
        return reverse(item)

如果要设置不同的优先级并更改不同URL的频率应该怎么办?

我已经看到了这个问题,但是我仍然不知道该怎么办: Priority issue in Sitemaps

解决方法

以类似的方式,您可以使用:

class StaticViewSitemap(Sitemap):
    changefreq = "weekly"
    # Remove the priority from here
    protocol = 'http' if DEBUG else 'https'

    def items(self):
        return ['home','contact_us','blog',]

    def location(self,item):
        return reverse(item)

    def priority(self,item):
        return {'home': 1.0,'contact_us': 1.0,'blog': 0.5}[item]
,

我实际上是为了实现它而完成的:

class StaticViewSitemap(Sitemap):

    protocol = 'http' if DEBUG else 'https'
    static_url_list = [
        {'url': 'home','priority': 0.8,'changefreq': "monthly"},{'url': 'contact_us','priority': 0.6,'changefreq': "weekly"},{'url': 'blog','priority': 0.4,'changefreq': "weekly"}
    ]

    def items(self):
        return [item['url'] for item in self.static_url_list]

    def location(self,item):
        return {element['url']: element['priority'] for element in self.static_url_list}[item]

    def changefreq(self,item):
        return {element['url']: element['changefreq'] for element in self.static_url_list}[item]