0
我在網站地圖模板中使用get_absolute_url。不是sitemap.xml,而是網站佈局中的一個頁面,顯示所有鏈接。我基本上得到所有頁面對象,並使用get_absolute_url在模板中查看它們。Django get_absolute_url查詢
我發現,每一個鏈接的數據庫被擊中一次。我如何減少查詢?
我想兩種解決方案,但我不知道哪條路是最好的:
- 使用從Django的網站地圖框架。我知道sitemap框架也使用get_absolute_url。當生成sitemap.xml時,我無法檢查查詢量(調試工具欄不顯示)。
- 編寫自定義的保存方法,並保存URL數據庫,使用get_absolute_url
編輯:
我使用一些簡單的代碼來生成的鏈接頁面:
Views.py:
all_links = mypage.objects.all()
模板:
<ul>
{% for link in all_links %}
<li>li><a href="{{link.get_absolute_url}}">{{link.link_title}}</a></li>
{% endfor %}
</ul>
models.py:
def get_absolute_url(self):
if self.submenu:
return "/%s/%s/" %(self.submenu.slug,self.slug)
elif not self.mainmenu:
return "/submenu/%s" % self.slug
else:
return "/%s/" % self.slug
EDIT2:
我會打開緩存在生產的時候。我認爲先優化是一件好事。
如果您有請求對象,那麼您可以使用[this](https://docs.djangoproject.com/en/1.11/ref/request-響應/#django.http.HttpRequest.build_absolute_uri)它不會擊中你的數據庫,甚至一次 –
我想要一個我的網站所有可用的URL列表。我不明白如何使用請求對象? –
如果您不顯示正在生成查詢的代碼,我們無法提供幫助。 – Alasdair