我尝试实施Sitemap索引,但我在sitemap.xml上收到以下错误。 sitemap-posts.xml和sitemap-categories.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_date
urls.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'),
]
请帮我解决此错误。
答案 0 :(得分:1)
从&#39; django.contrib.sitemaps.views.sitemap1&#39;更改名称到#sitemaps&#39;。显然它使用该名称进行解析。
name='django.contrib.sitemaps.views.sitemap1'
我的网址看起来完全像这样,工作正常,当我更改名称时,我的错误接近你的。
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,因为我正在缓存。
答案 1 :(得分:0)
我找到了第二个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'
它可以在我的电脑上运行。