在 Django 中创建站点地图时出现 'ArticleSitemap' 对象没有属性 'get_urls' 错误

getting 'ArticleSitemap' object has no attribute 'get_urls' error when creating sitemap in django

按照django官方文档的描述和sitemap的标准设置,但出现以下错误:

/sitemap.xml/ 处的属性错误 'ArticleSitemap' 对象没有属性 'get_urls'

这是我的网址:

from django.contrib.sitemaps.views import sitemap
from . import views
from .sitemaps import StaticViewSitemap, ArticleSitemap, ArticleCategorySitemap

sitemaps = {'static': StaticViewSitemap,
            'article': ArticleSitemap,
            'article-category': ArticleCategorySitemap}

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

有我的 sitemaps.py:

from django.contrib.sitemaps import Sitemap
from django.shortcuts import reverse

from iman_articles.models import Article, Category


class StaticViewSitemap(Sitemap):
    def items(self):
        return ['home']
    
    def location(self, item):
        return reverse(item)

class ArticleCategorySitemap(Sitemap):
    changefreq = 'never'
    priority = 0.5
    
    def items(self):
        return Category.objects.all()

    


class ArticleSitemap():
    changefreq = 'monthly'
    priority = 0.5

    def items(self):
        return Article.objects.filter(active=True)

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

您的 ArticleSitemap 应该继承自 Sitemap,所以:

#                       ↓ inherit
class ArticleSitemap(<b>Sitemap</b>):
    changefreq = 'monthly'
    priority = 0.5

    def items(self):
        return Article.objects.filter(active=True)

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