2017-03-24 14 views
0

このエラーが発生すると、処理が中断されます。サイトマップのための標準的なセットアップを踏襲し、次のエラーました:Djangoサイトマップ: 'module'オブジェクトには属性 'get_urls'がありません

AttributeError at /sitemap.xml 

'module' object has no attribute 'get_urls' 

私urls.py:

from django.conf.urls import url, include 
from django.contrib import admin 
from django.contrib.sitemaps.views import sitemap 
import blog.views as PostSiteMap 
sitemaps ={ 
    'post' : PostSiteMap 
} 
urlpatterns = [ 

    url(r'^sitemap\.xml$', sitemap, {'sitemaps': sitemaps}, 
    name='django.contrib.sitemaps.views.sitemap') 
] 

views.py:

class PostsSiteMap(Sitemap): 
    changefreq = "daily" 
    priority = 1.0 
    def items(self): 
     return Post.objects.all() 

    def lastmod(self, obj): 
     return obj.date 

    def location(self, item): 
     return reverse(item) 

ポストmodels.py:

class Post(models.Model): 
title = models.CharField(max_length = 140) 
body = RichTextUploadingField() 
date = models.DateTimeField() 
tags = models.ManyToManyField('Tags') 
thumbnail = models.ImageField(upload_to="images/", null = False , default='images/place.png', blank = True, width_field="width_field", 
     height_field="height_field") 
height_field = models.IntegerField(default = 0, null = True, blank = True) 
width_field = models.IntegerField(default = 0, null = True, blank = True) 

def __str__(self): 
    return self.title 

def recent_posts(self): 
    d = datetime.utcnow().replace(tzinfo=pytz.UTC) - timedelta(days=30) 
    if self.date > d: 
     return True 
    else: 
     return False 

def get_absolute_url(self): 
    return "/blog/%i/" % self.pk 

誰にも理由がありますか?ありがとう!

+0

私はサイトマップモジュールを使用するたびに、私はtry&except節に入れてください。プット・プリントを除いた後(sys.exc_info()[0])あなたは以下の答えはあなたの問題を解決するために助けたの –

+0

に何が起こっているか指示を与えるかもしれませんか? –

答えて

0

あなたが得るエラーは、sitemaps辞書、モジュールPostSiteMap自体の代わりに、(PostSiteMapモジュール内に住ん)実際のPostsSiteMapクラス内で渡しているという事実にあるべきです。

まず第一に、あなたのサイトマップは、(これは単なる慣習と良いpraciceです)sitemap.pyと呼ばれる別のファイルに生きるべき。それがプロジェクト全体(それは、サイトマップと呼ばれる理由です!)のサイトマップに関するので、このファイルには、wsgi.pysettings.pyなどと同じレベルに生きるべき。 (PostsSiteMapクラスを定義している)あなたのviews.py

あなたはこのような権利何かすべき:

# blog/views.py 

class PostsSiteMap(Sitemap): 
    # your code as is 

# This dictionary outside the class definition 
SITEMAPS = { 
    'post': PostsSiteMap, 
} 

今、あなたのurls.pyでこれらを書く:

# urls.py 

from django.conf.urls import url, include 
.... 
from blog.views import SITEMAPS 

urlpatterns = [ 
    url(r'^sitemap\.xml$', sitemap, {'sitemaps': SITEMAPS}, name='django.contrib.sitemaps.views.sitemap') 
] 
+0

はい!これはうまくいった!どうもありがとうございます –

関連する問題