我在应用程序中实现站点地图时遇到问题。我正在使用Virtualenv,django 1.4和Python 2.7。如果你能帮我解决这个问题,我将不胜感激。
这就是我所做的:
在我的urls.py
中from sitemap import JobPostSitemap
sitemaps = {
'jobs': JobPostSitemap,
}
... # Removed other urls
url(r'^sitemap\.xml$', 'django.contrib.sitemaps.views.sitemap', {'sitemaps': sitemaps}),
然后在我的sitemap.py文件中
from django.contrib.sitemaps import Sitemap
from jobs.models import JobPost
class JobPostSitemap(Sitemap):
changefreq = "never"
priority = 0.5
def items(self):
return JobPost.objects.filter(approved=True)
def lastmod(self, obj):
return obj.pub_date
我的settings.py文件如下:
TEMPLATE_LOADERS = (
'django.template.loaders.filesystem.Loader',
'django.template.loaders.app_directories.Loader',
)
...
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.sitemaps',
'jobs',
)
...
现在,当我打开浏览器并导航到http://localhost:8000/sitemap.xml
时,我收到以下错误:
ImportError at /sitemap.xml
No module named django.contrib.sitemaps
Request Method: GET
Request URL: http://localhost:8000/sitemap.xml
Django Version: 1.4.2
Exception Type: ImportError
Exception Value:
No module named django.contrib.sitemaps
Exception Location: /home/frank/Projects/python/django/techjobsea.com/baseline27/local/lib/python2.7/site-packages/Django-1.4.2-py2.7.egg/django/utils/importlib.py in import_module, line 35
Python Executable: /home/frank/Projects/python/django/techjobsea.com/baseline27/bin/python
Python Version: 2.7.3
我无法弄清楚我错过了什么或做错了什么。
答案 0 :(得分:18)
我有类似的错误。我更改了urls.py定义:
from sitemap import JobPostSitemap
from django.contrib.sitemaps.views import sitemap
sitemaps = {
'jobs': JobPostSitemap,
}
... # Removed other urls
url(r'^sitemap\.xml$', sitemap, {'sitemaps': sitemaps}),
它对我有用。我不知道为什么......
答案 1 :(得分:0)
可能是PYTHONPATH
问题。运行python manage.py shell
并尝试import django.contrib.sitemaps
答案 2 :(得分:0)
问题可能在于您尚未完全提交的url.py配置。在我的情况下,我无意中留下了形式的前缀:urlpatterns = patterns('...')
,阻止了Django找到正确的路径。
答案 3 :(得分:-2)
要在Django站点上激活站点地图生成,请将此行添加到您的URLconf:
(r'^sitemap\.xml$', 'django.contrib.sitemaps.views.sitemap', {'sitemaps': sitemaps})
这告诉Django在客户端访问/sitemap.xml时构建站点地图。