我正在尝试实现站点地图索引,但是我在sitemap.xml上得到了下面的错误。sitemap-posts.xml和sitemap-catories.xml运行良好。
误差
NoReverseMatch at /sitemap.xml
Reverse for 'django.contrib.sitemaps.views.sitemap' with arguments '()' and keyword arguments '{'section': 'categories'}' not found. 0 pattern(s) tried: []sitemap.py
from django.contrib.sitemaps import Sitemap
from .models import Post, Category
class PostSitemap(Sitemap):
changefreq = 'daily'
priority = 0.5
def items(self):
return Post.objects.published()
def lastmod(self, obj):
return obj.mod_date
class CategorySitemap(Sitemap):
changefreq = 'daily'
priority = 0.5
def items(self):
return Category.objects.all()
def lastmod(self, obj):
return obj.created_dateurls.py
from django.conf.urls import url
from django.contrib.sitemaps import views as sitemap
from . import views
from .sitemaps import PostSitemap, CategorySitemap
sitemaps = {
'posts': PostSitemap,
'categories': CategorySitemap,
}
urlpatterns = [
url(r'^sitemap\.xml$', sitemap.index, { 'sitemaps': sitemaps },
name='app1-sitemap'),
url(r'^sitemap-(?P<section>.+)\.xml$', sitemap.sitemap, { 'sitemaps': sitemaps },
name='django.contrib.sitemaps.views.sitemap1'),
]请帮我改正这个错误。
发布于 2016-06-14 12:06:45
将名称从“django.contrib.sitemaps.views.sitemap1”改为“sitemaps”。显然它用这个名字来解决问题。
name='django.contrib.sitemaps.views.sitemap1'我的urls看起来就像这样,它工作得很好,当我更改名称时,我得到了一个接近您的错误。
from django.contrib.sitemaps.views import sitemap, index
urlpatterns += [
url(r'^sitemap\.xml$', cache_page(86400)(index), {'sitemaps': sitemaps, 'sitemap_url_name': 'sitemaps'}),
url(r'^sitemap-(?P<section>.+)\.xml$', cache_page(86400)(sitemap), {'sitemaps': sitemaps}, name='sitemaps' )
]sitemap_url_name是必需的,因为我正在缓存。
发布于 2017-11-29 09:19:47
我找到了第二个URL conf的名字。应该是
name='django.contrib.sitemaps.views.sitemap' ,它指的是官方文档https://docs.djangoproject.com/en/1.11/ref/contrib/sitemaps/#creating-a-sitemap-index。
而不是你用的东西
name='django.contrib.sitemaps.views.sitemap1'它能在我的电脑上工作。
https://stackoverflow.com/questions/37803947
复制相似问题