Реализация sitemaps в Django
у меня возникла проблема с реализацией sitemaps в моем приложении. Я использую 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
Я не могу понять, что я пропустил или делаю неправильно.
4 ответов
У меня была аналогичная ошибка. Я изменил определение 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}),
и это сработало для меня. Не знаю почему...
может быть PYTHONPATH
вопрос. Запустить python manage.py shell
и попытаться import django.contrib.sitemaps
проблема, вероятно, заключается в url.py config, который вы не полностью отправили. В моем случае я нечаянно оставил приставку формы:urlpatterns = patterns('...')
это помешало Джанго найти правильный путь.
чтобы активировать генерацию sitemap на сайте Django, добавьте эту строку в URLconf:
(r'^sitemap\.xml$', 'django.contrib.sitemaps.views.sitemap', {'sitemaps': sitemaps})
Это говорит Django создать sitemap, когда клиент обращается к / sitemap.XML.