2016-06-14 19 views
0

サイトマップインデックスを実装しようとしていますが、sitemap.xmlで以下のエラーが発生しています。 sitemap-posts.xmlとsitemap-categories.xmlは正常に動作します。Django SItemap Index /sitemap.xmlのNoReverseMatch

エラー

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'), 
] 

このERを修正するために私を助けてくださいror。

+0

完全なスタックトレースと 'views.py'も投稿してください。 – solarissmoke

+0

2番目のURLにkwargsを付けて最初のURLを呼び出しています。 – Sayse

答えて

1

「django.contrib.sitemaps.views.sitemap1」から「sitemaps」に名前を変更してください。どうやらそれは解決のためにその名前を使用します。

name='django.contrib.sitemaps.views.sitemap1' 

私のURLはちょうどこのように見え、正しく動作します。名前を変更すると、私はあなたの近くにエラーがあります。

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'に変更しましたが、引き続き同じエラーが発生しています。また、 'sitemap'でも運がないと試しました。 –

+0

私は正確な作業コピーでコードを更新しましたが、名前を変更したときにあなたのものと似たエラーがありました。キャッシングビットは無視してもかまいません。 – keni

+0

url dictに 'sitemap_url_name'を追加すると、それが私のために修正されました。ありがとう。 – Cerin