Django 1.6:名称 'Sitemap' 未定义

Django 1.6: name 'Sitemap' is not defined

我在 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'$
)

我遇到了这个问题,可能是什么原因?

我关注了this and this

但还没有运气=/

有什么想法吗?

提前致谢!

将您的 class 定义更改为 class ContratalosSitemap(sitemaps.Sitemap): 它应该可以工作

使用 import sitemap 您只导入了模块名称。所以如果你想在模块中使用一些东西,你也需要写 sitemap.Sitemap.

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

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