8

アプリケーションにサイトマップを実装する際に問題が発生しました。Virtualenv、django 1.4、Python2.7を使用しています。私がこれを解決するのを手伝っていただければ幸いです。

これは私がしたことです:

  1. 私のurls.pyで

    from sitemap import JobPostSitemap
    sitemaps = { 
        'jobs': JobPostSitemap, 
    }
    ... # Removed other urls
    url(r'^sitemap\.xml$', 'django.contrib.sitemaps.views.sitemap', {'sitemaps': sitemaps}),
    
  2. 次に、私の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
    
  3. 私の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

4 に答える 4

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}),

それは私のために働いた。どうしてか分かりません...

于 2013-05-24T07:35:03.057 に答える
0

問題になる可能性がありますPYTHONPATH。実行python manage.py shellしてみてくださいimport django.contrib.sitemaps

于 2012-12-17T10:23:23.283 に答える
0

問題はおそらく、完全に送信していない url.py 構成にあります。私の場合、うっかり :urlpatterns = patterns('...')という形式のプレフィックスを残してしまい、Django が正しいパスを見つけることができませんでした。

于 2013-01-09T11:28:41.233 に答える
-2

Django サイトでサイトマップの生成を有効にするには、次の行を URLconf に追加します。

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

これにより、クライアントが /sitemap.xml にアクセスしたときにサイトマップを作成するよう Django に指示します。

于 2012-12-17T10:14:29.270 に答える