Python 在Django中实现站点地图

Python 在Django中实现站点地图,python,django,sitemap,Python,Django,Sitemap,我在应用程序中实现站点地图时遇到问题。我正在使用Virtualenv、django 1.4和Python 2.7。如果你能帮我解决这个问题,我将不胜感激 这就是我所做的: 在myurl.py中 from sitemap import JobPostSitemap sitemaps = { 'jobs': JobPostSitemap, } ... # Removed other urls url(r'^sitemap\.xml$', 'django.contrib.sitemaps.

我在应用程序中实现站点地图时遇到问题。我正在使用Virtualenv、django 1.4和Python 2.7。如果你能帮我解决这个问题,我将不胜感激

这就是我所做的:

  • 在myurl.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
    
  • My 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
    

    我不知道我错过了什么或做错了什么。

    要在Django站点上激活站点地图生成,请将此行添加到URLconf:

    (r'^sitemap\.xml$', 'django.contrib.sitemaps.views.sitemap', {'sitemaps': sitemaps})
    

    这会告诉Django在客户端访问/sitemap.xml时构建站点地图。

    这可能是一个
    PYTHONPATH
    问题。运行
    python manage.py shell
    并尝试导入django.contrib.sitemaps问题可能在于您尚未完全提交的url.py配置。在我的例子中,我无意中留下了一个前缀:
    urlpatterns=patterns(“…”)
    ,它阻止Django找到正确的路径。

    我也有类似的错误。我更改了URL.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}),
    

    这对我很有效。我不知道为什么…

    您是否遵循了
    站点地图
    所需的所有安装步骤?所需步骤@doru是。我遵循了所有的步骤。你找到解决办法了吗?@Murat Chorlu不,我没有。无法解释为什么它不起作用。谢谢,但我已经包括了那个部分。除了网站地图,所有的URL都很好用。哥们,这真的很有效。谢谢我很想知道为什么这种方法与其他方法不同。斯威特!
    模式
    调用是否具有非空的
    前缀
    参数?类似于
    urlpatterns=patterns('some.prefix',url(r'…'),…)
    ?这可能是你的问题。