【问题标题】:getting 'ArticleSitemap' object has no attribute 'get_urls' error when creating sitemap in django在 django 中创建站点地图时,获取“ArticleSitemap”对象没有属性“get_urls”错误
【发布时间】:2021-02-17 20:32:22
【问题描述】:

按照 django 官方文档的描述和站点地图的标准设置,但收到以下错误:

/sitemap.xml/ 处的 AttributeError “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

【问题讨论】:

    标签: python django sitemap


    【解决方案1】:

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

    #                       ↓ inherit
    class ArticleSitemap(Sitemap):
        changefreq = 'monthly'
        priority = 0.5
    
        def items(self):
            return Article.objects.filter(active=True)
    
        def lastmod(self, obj):
            return obj.edited_at

    【讨论】:

    • 谢谢,它在本地服务器上工作,但在主机上 debug=False 它显示空白页面imanrezaei.ir/sitemap.xml
    • @irectonic.com:如果我用curl 运行它,我会得到数据。例如<loc>http://www.imanrezaei.ir/articles/sitemap.xml</loc>。浏览器中的某些内容可能无法正常工作。请注意,您的 SSL 证书无效。
    • 它的错误 XML Parsing Error: not well-formed Location: imanrezaei.ir/sitemap.xml Line Number 8, Column 12: sitemap.xml:8:12 Cross-Origin Request Blocked: Same Origin Policy disallows reading imanrezaei.ir 的远程资源。 (原因:CORS 标头“Access-Control-Allow-Origin”缺失)。
    • @irectonic.com:是的,大多数浏览器都会阻止对另一个域的 AJAX 请求:en.wikipedia.org/wiki/…
    • 必须在主机上设置 Access-Control-Allow-Origin: imanrezaei.ir
    猜你喜欢
    • 2015-01-29
    • 1970-01-01
    • 2016-01-16
    • 2016-11-17
    • 2023-03-15
    • 2017-01-22
    • 2020-12-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多