Django 1.6:名称'站点地图'没有定义

时间:2015-07-11 08:06:33

标签: python django amazon-web-services django-sitemaps

我在Django 1.6上遇到了这个问题

这是我的sitemaps.py

from django.contrib import sitemaps
from django.core.urlresolvers import reverse

from datetime import datetime

class ContratalosSitemap(Sitemap):

def __init__(self, names):
    self.names = names

def items(self):
    return self.names

def changefreq(self, obj):
    return 'weekly'

def lastmod(self, obj):
    return datetime.now()

这是我的urls.py

from django.conf.urls import patterns, include, url
from django.conf import settings
from django.contrib import admin
from django.contrib.sitemaps import Sitemap
from sitemaps.py import ContratalosSitemap

#Declaration for sitemaps url

sitemaps = {
    'pages' : ContratalosSitemap,
}

urlpatterns = patterns(
'apps.contratalos.views',
url(r'c/(?P<slug>\.*[^ ]{1,128})?/', 'c', name='content'),
url(r'^sitemap\.xml$', 'django.contrib.sitemaps.views.sitemap',    {'sitemaps'$
)

我坚持这个,可能是什么原因?

我关注thisthis

但是没有运气= /

有什么想法吗?

提前致谢!

2 个答案:

答案 0 :(得分:2)

将您的班级定义更改为班级ContratalosSitemap(sitemaps.Sitemap):,它应该有效

答案 1 :(得分:1)

使用import sitemap您只导入了模块名称。因此,如果您想在模块中使用某些内容,则需要编写sitemap.Sitemap

如果你写from sitemap import Sitemap,你可以从模块中专门导入Sitemap类,并且可以直接使用它,就像你的代码一样。

您也可以执行from sitemap import *,它将导入模块中的所有定义。但不建议这样做,因为你可能只使用了几个名字。