終於解決了django的sitemap發生的flatpage錯誤了

來源:互聯網
上載者:User

很多人都知道django提供了sitemaps的功能,就是在一個sitemap.xml中顯示網站一些相關的項目:

 

一般是按照下面的方法在urls.py中加入:

from django.contrib.sitemaps import FlatPageSitemap, GenericSitemap

from ddtcms.blog.sitemaps import BlogSitemap
from ddtcms.blog.models import Entry

 

info_dict = {
    'queryset': Entry.objects.all(),
    'date_field': 'pub_date',
}

sitemaps = {
    'flatpages': FlatPageSitemap,
    'blog': BlogSitemap,
}

再在urlpatterns中加入:

 (r'^sitemap.xml$', 'django.contrib.sitemaps.views.sitemap', {'sitemaps': sitemaps}),   
    #(r'^sitemap.xml$', 'django.contrib.sitemaps.views.index', {'sitemaps': sitemaps}),
    (r'^sitemap-(?P<section>.+).xml$', 'django.contrib.sitemaps.views.sitemap', {'sitemaps': sitemaps}),

 

然後在瀏覽器中訪問 http://127.0.0.1:8000/sitemap.xml 即可.

 

我按照上面的做法做了,但是會出現下面的錯誤:

AttributeError at /sitemap.xml
'Site' object has no attribute 'flatpage_set'

Request Method: GET
Request URL: http://localhost/sitemap.xml
Exception Type: AttributeError
Exception Value:
'Site' object has no attribute 'flatpage_set'
Exception Location: C:/python25/Lib/site-packages/django/contrib/sitemaps/__init__.py in items, line 81

 

說的就是'Site' object has no attribute 'flatpage_set',看了django的原始碼,也不知道是怎麼回事.

 

後來看了google上的一些django apps,我終於把上面這個錯誤解決了.

方法是:

 

在settings.py中增加

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.sites',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
......
    'django.contrib.flatpages',  <<<<增加這個

 

 

MIDDLEWARE_CLASSES = (

....
   'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware', <<<增加這個

 

 

再訪問 http://127.0.0.1:8000/sitemap.xml  試試?就出來了在blog模組中定義的sitemap的條目了.

很簡單是不是?

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.