2016-02-28 67 views
0

我正在通过Hellowebapp教程,但是当我尝试实现站点地图到我的web应用程序时发生了error。这里是我的sitemap.py文件:TypeError:object()不采用任何参数 - 试图实现站点地图

import datetime 
from django.contrib.sitemaps import Sitemap 
from django.core.urlresolvers import reverse 
from .models import Thing 

class ThingSitemap(Sitemap): 
    changefreq = "weekly" 
    priority = 0.5 

    def items(self): 
     return Thing.objects.all() 

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

class StaticSitemap(Sitemap): 
    lastmod = None 
    priority = 0.5 
    changefreq = "weekly" 

    def items(self): 
     return ['about', 'contact', 'browse',] 

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

class HomepageSitemap(Sitemap): 
    priority = 1 
    changefreq = "daily" 

    def items(self): 
     return ['home',] 

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

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

的东西,我已经尝试过:

  • 在我身上取出的代码块(如不同的地图类)
  • 检查压痕(耻辱如果我错过了这里的任何东西)

任何帮助将不胜感激!

根据要求,这里是我urls.py:

from django.conf.urls import url, include 
from django.contrib import admin 
from django.contrib.auth.views import password_reset, password_reset_done, password_reset_confirm, password_reset_complete 
from django.views.generic import TemplateView, RedirectView 
from django.contrib.sitemaps import Sitemap 
from collection.sitemap import (
    ThingSitemap, 
    StaticSitemap, 
    HomepageSitemap, 
) 
sitemaps = { 
    'things': ThingSitemap, 
    'static': StaticSitemap, 
    'homepage': HomepageSitemap, 
} 

from collection.backends import MyRegistrationView 
from collection import views 


urlpatterns = [ 
    url(r'^$', views.index, name='home'), 
    url(r'^about/$', 
     TemplateView.as_view(template_name='about.html'), name='about'), 
    url(r'^contact/$', views.contact, name='contact'), 


    url(r'^things/$', RedirectView.as_view(pattern_name='browse')), 
    url(r'^things/(?P<slug>[-\w]+)/$', 
     views.thing_detail, name='thing_detail'), 
    url(r'^things/(?P<slug>[-\w]+)/edit/$', 
     views.edit_thing, name='edit_thing'), 

    url(r'^browse/$', RedirectView.as_view(pattern_name='browse')), 
    url(r'^browse/name/$', 
     views.browse_by_name, name='browse'), 
    url(r'^browse/name/(?P<initial>[-\w]+)/$', 
     views.browse_by_name, name='browse_by_name'), 


    # password reset urls 
    url(r'^accounts/password/reset/$', password_reset, 
     {'template_name': 'registration/password_reset_form.html'}, 
     name="password_reset"), 
    url(r'^accounts/password/reset/done/$', 
     password_reset_done, 
     {'template_name': 'registration/password_reset_done.html'}, 
     name="password_reset_done"), 
    url(r'^accounts/password/reset/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$', 
     password_reset_confirm, 
     {'template_name': 'registration/password_reset_confirm.html'}, 
     name="password_reset_confirm"), 
    url(r'^accounts/password/done/$', password_reset_complete, 
     {'template_name': 'registration/password_reset_complete.html'}, 
     name="password_reset_complete"), 

    url(r'^accounts/register/$', 
     MyRegistrationView.as_view(), name='registration_register'), 
    url(r'^accounts/create_thing/$', 
     views.create_thing, name='registration_create_thing'), 

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


    url(r'^accounts/', include('registration.backends.simple.urls')), 
    url(r'^admin/', include(admin.site.urls)), 
] 
+0

你可以分享你的'urls.py'吗? – Bjorn

+1

在[docs](https://docs.djangoproject.com/en/1.9/ref/contrib/sitemaps/)中,他们在urls.py中使用这个:'url(regular_expression,django.contrib.sitemaps.views。 sitemap,{'sitemaps':dict_of_your_maps},name ='django.contrib.sitemaps.views.sitemap')'。你的第二个参数是“Sitemap”而不是“sitemap”。你可以尝试改变它吗? – bbayles

回答

0

由于bbayles“发表评论我能解决我的问题。通过浏览文档,我意识到我犯了一个搞砸我的进口的新手错误。我试图从django.contrib.sitemaps导入,而不是从django.contrib.sitemaps.views导入。另外,我试图导入Sitemap而不是sitemap