2013-07-12 73 views
1

是否有一種方法可以將自定義站點添加到站點地圖中?我想將我的主頁添加到站點地圖中,但我不使用flatpagesDjango站點地圖 - 將loc添加到站點地圖

我應該開始使用flatpages並手動將主頁添加到數據庫中嗎?你推薦哪種方法?我使用django.contrib.sitemaps來生成站點地圖。

回答

2

您可以定義特定視圖站點地圖,否則不包括在該網站的站點地圖,因爲在一個下面我爲我自己的Django應用程序開發:

from django.core.urlresolvers import reverse 
from django.contrib.sitemaps import Sitemap 

class StaticSitemap(Sitemap): 
    """Reverse static views for XML sitemap.""" 

    def __init__(self, items_in=[]): 
     self.items_list = items_in 

    def items(self): 
     # Return list of url names for views to include in sitemap 
     return self.items_list 

    def location(self, item): 
     # if kwargs not in item set as None 
     kwargs = item['kwargs'] if 'kwargs' in item else None 
     return reverse(item['view_name'], kwargs=kwargs) 

這基本上反轉視圖名稱(如在urls.py中指定)轉換爲將在站點地圖中顯示的實際URL。

使用

指定urls.pysitemap.xml網址,以便它需要一個sitemaps參數如下urls.py提取物:

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

sitemaps字典應該簡單地包括如條目:

sitemaps = { 
    'views': StaticSitemap(STATIC_VIEWS), 
    ... 
} 

其中STATIC_VIEWS以這種方式構建:

STATIC_URLS = [ 
    'home_page', 'about_page', 'disclaimer_page', # any other view name 
] 
STATIC_VIEWS = [] 
for url in STATIC_URLS: 
    STATIC_VIEWS.append({'view_name':url})