2016-06-14 93 views
0

我想實現Sitemap索引,但是我在sitemap.xml上得到了下面的錯誤。 sitemap-posts.xml和sitemap-categories.xml工作正常。Django SItemap索引NoReverseMatch在/sitemap.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'), 
] 

請幫我解決這個呃ROR。

+0

請發佈完整的堆棧跟蹤以及您的'views.py'。 – solarissmoke

+0

你打電話給第一個URL與第二個URL的kwargs。 – Sayse

回答

1

將名稱從'django.contrib.sitemaps.views.sitemap1'更改爲'站點地圖'。顯然它使用該名稱來解析。

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,因爲我在緩存。

+0

我已將它更改爲'sitemaps',但仍然收到相同的錯誤。也嘗試與'網站地圖',但沒有運氣。 –

+0

我用一個確切的工作副本更新了代碼,當我更改名稱時出現類似於您的錯誤。您可能會忽略緩存位。 – keni

+0

將「sitemap_url_name」添加到網址字典中是爲我修復的。謝謝。 – Cerin