我正在尝试在我的django应用程序中实现站点地图,但是我收到以下错误。我正在使用django sitemap的框架。我不知道我做错了什么。
Traceback:
File "mysite/urls.py" in <module>
3. from sitemap import *
File "mysite/sitemap.py" in <module>
5. class Sitemap(sitemaps.Sitemap):
Exception Type: NameError at /
Exception Value: name 'sitemaps' is not defined
这是sitemap.py文件
from django.contrib.sitemaps import Sitemap
from meddy1.models import Doctor
import datetime
class Sitemap(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.datetime.now()
def location(self, obj):
return reverse(obj)
class DoctorSitemap(Sitemap):
changefreq = "Daily"
priority = 1
def items(self):
return Doctor.objects.all()
def lastmod(self, obj):
return obj.date
这是urls.py文件
from django.conf.urls import patterns, include, url
from django.contrib import admin
from sitemap import *
admin.autodiscover()
sitemaps = {
'pages':Sitemap(['homepage_imprint', 'homepage_archive']),
'doctor':DoctorSitemap,
'site':Sitemap(['name_of_url', 'name_of_url']),
}
urlpatterns = patterns('',
url(r'^', include('meddy1.urls')),
url(r'^', include('django.contrib.auth.urls')),
url(r'^admin/', include(admin.site.urls)),
url(r'^sitemap\.xml', include('django.contrib.sitemaps.views.sitemap'),{'sitemaps': sitemaps}),
)
答案 0 :(得分:1)
您从模块导入了Sitemaps
,而不是模块本身。删除模块名称:
class Sitemap(Sitemap):
这将只是关于工作,即使你在这里替换导入的类。
或者可以更清楚地了解您正在做什么,调整您对模块的导入。更改导入:
from django.contrib.sitemaps import Sitemap
为:
from django.contrib import sitemaps
答案 1 :(得分:0)
Martijn已经提供了正确的答案,我只想在Python中添加关于命名空间的更一般的注释:你在Python中使用的每个名称都必须来自某个地方。有许多内置名称始终可用,例如DIR()。除了内置函数之外,每个名称都必须在模块中自己的代码中创建,或者从其他模块或包中导入:
>>> x
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'x' is not defined
>>> x = 1
>>> x
1
>>> sys
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'sys' is not defined
>>> import sys
>>> sys
<module 'sys' (built-in)>
答案 2 :(得分:0)
只需将站点地图中的 s 更改为小写并将 .views 添加到导入行。因此新的导入应该是“from django.contrib.sitemaps.views import sitemap”