2012-12-17 43 views
8

Tôi gặp sự cố khi triển khai sơ đồ trang web trong ứng dụng của mình. Tôi đang sử dụng Virtualenv, django 1.4 và Python 2.7. Tôi sẽ đánh giá cao nếu bạn có thể giúp tôi giải quyết vấn đề này.Triển khai sơ đồ trang web ở Django

Đây là những gì tôi đã làm:

  1. Trong urls.py tôi

    from sitemap import JobPostSitemap 
    sitemaps = { 
        'jobs': JobPostSitemap, 
    } 
    ... # Removed other urls 
    url(r'^sitemap\.xml$', 'django.contrib.sitemaps.views.sitemap', {'sitemaps': sitemaps}), 
    
  2. Sau đó, trong tập tin sitemap.py tôi

    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 của tôi tệp như sau:

    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', 
    ) 
    ... 
    

Bây giờ khi tôi mở trình duyệt của tôi và điều hướng đến http://localhost:8000/sitemap.xml, tôi nhận được lỗi sau:

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 

tôi không thể tìm ra những gì tôi đã bỏ lỡ hoặc làm sai.

+0

Bạn đã làm theo tất cả các bước cài đặt bắt buộc cho 'sơ đồ trang web 'chưa? Các bước bắt buộc [ở đây] (https://docs.djangoproject.com/en/dev/ref/contrib/sitemaps/) – doru

+0

@doru Có. Tôi đã làm theo tất cả các bước. – Frankline

+0

Bạn đã tìm thấy giải pháp chưa? –

Trả lời

17

Tôi gặp lỗi tương tự. Tôi đã thay đổi định nghĩa urls.py như sau:

from sitemap import JobPostSitemap 
from django.contrib.sitemaps.views import sitemap 
sitemaps = { 
    'jobs': JobPostSitemap, 
} 
... # Removed other urls 
url(r'^sitemap\.xml$', sitemap, {'sitemaps': sitemaps}), 

và nó đã hiệu quả đối với tôi. Tôi không biết tại sao ...

+0

Dude, điều này thực sự làm việc. Cảm ơn. Tôi sẽ được quan tâm để biết tại sao điều này hoạt động như trái ngược với phương pháp khác. Sweeet! – Frankline

+1

Lệnh gọi 'mẫu' có tham số' prefix' không trống không? Cái gì đó như 'urlpatterns = patterns ('some.prefix', url (r '...'), ....)'? Đây có thể là vấn đề của bạn. – naktinis

-2

Để kích hoạt hệ sitemap trên trang web của Django của bạn, thêm dòng này vào URLconf của bạn:

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

này cho Django để xây dựng một sitemap khi một khách hàng truy cập /sitemap.xml.

+1

Điều đó khác với những gì anh ta đã có? – piokuc

0

Có thể là sự cố PYTHONPATH. Chạy python manage.py shell và thử import django.contrib.sitemaps

+0

Tôi đã làm. Không có lỗi. – Frankline

0

Sự cố có thể nằm trong cấu hình url.py mà bạn chưa gửi hoàn toàn. Trong trường hợp của tôi, tôi đã vô tình để lại một tiền tố của biểu mẫu: urlpatterns = patterns('...') ngăn Django tìm đường dẫn đúng.

+0

Cảm ơn, nhưng tôi đã bao gồm phần đó. Tất cả các url đều hoạt động tốt ngoại trừ sơ đồ trang web. – Frankline

Các vấn đề liên quan