サイトマップテンプレートでget_absolute_urlを使用しています。 sitemap.xmlではなく、すべてのリンクを表示するサイトレイアウトのページ。私は基本的にすべてのページオブジェクトを取得し、get_absolute_urlを使用してテンプレート内でそれらを繰り返します。Django get_absolute_urlクエリ
すべてのリンクでデータベースが1回ヒットすることがわかりました。どのようにクエリを減らすのですか?
私は2つの解決策を考え、私は最適な方法を知らない:
- はジャンゴからサイトマップフレームワークを使用します。私はサイトマップフレームワークもget_absolute_urlを使用していることを知っています。 sitemap.xmlが生成されたときにクエリの量を確認できませんでした(デバッグツールバーが表示されません)。
- 保存方法カスタムを書き、はget_absolute_url
編集使用して、データベース内の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