我設置了一些Django站點地圖。它適用於我擁有的所有對象,但我很好奇我應該如何做,如果我想在沒有對象關聯的站點地圖中添加內容。沒有關聯對象的Django站點地圖(只是一個視圖)
例如,我有一個類別列表,我可以返回所有類別的查詢集。網址將是example.com/cats/12或你有什麼。我也有一種不與類別對象關聯的僞根類別。該頁面(example.com/cats/)只是一個視圖,包括沒有父項的所有子類別以及產品列表。點是,我不能使用get_absolute_url,因爲沒有「根」對象。我的解決辦法是讓查詢集作爲一個列表,添加一個「無」對象,然後得到相應的URL:
class CatsSitemap(Sitemap):
changefreq = "weekly"
priority = 0.4
def items(self):
cats = list(Category.objects.all())
cats.append(None)
return cats
def location(self, obj):
if(obj != None):
return reverse('cats_sub_category', args=[obj.pk])
else:
return reverse('cats_root')
有誰看到這是一個問題?將它們作爲列表殺死性能返回嗎?實際上,我們可能會有數百個類別,但可能不會比這更多。太多了?
似乎是一個不錯的解決方案給我。你應該看到將這個包含在django的站點地圖模塊中,我認爲這非常有用。我不確定如何使用datetime.datetime.now()作爲lastmod時間戳,儘管 – 2010-08-23 16:08:30
儘管您可以將'priority'和'changefreq'參數設置爲__init__,以支持添加具有不同優先級和changefreq的多個命名頁面 – 2010-08-23 16:13:07