1
テンプレートにforループがあります。私は最初の3つの項目をブログのループに表示したいだけです。django forループをテンプレートまたはビューで制限してパフォーマンスを向上させますか?
は、現時点では唯一の20のブログのエントリがありますが、ブログのエントリは、パフォーマンスの観点から、500以上を言うのであれば、それはviews.pyコードまたはテンプレートコードでループを制限するために良いですか?ここで
blog_latest_entries = BlogDetails.objects.filter(blog_date_published__lte=date_now).order_by('-blog_date_published')[:3]
.....
return render(request, 'page.html', {
'blog': blog_details_latest_entries,
テンプレートコードで制限されています:
{% for blog in blog|slice:"3" %}
パフォーマンスのために最適なオプションは
ここviews.pyファイルのループ限度があります。私は、views.pyのアプローチを疑っていますが、本当の知識を持っている人が私の疑惑を後押ししたいと思います。
ありがとうございました。
を使用するよりも、同じである、 'slice'は、リストの要素を制限するために最善の方法です。 – Deadpool
同じです。 Django Debug Toolbarを使って、Luke! –
ビュー内のqを制限します。両方の場合にSQL文が実行されますが、制限されたSQL文は高速で重すぎるものではありません。テンプレートのqをカットすると同じ出力が得られますが、最初の3つの要素が必要な場合でもすべてのデータをロードするので、そこに到達する方法は長くなります。 さらに最適化したい場合は、 'prefetch_related()'と 'values_list()'を検索することをお勧めします。 'forループ'で実行中の変数の名前を変更してください。それは同じであってはならない。 – hansTheFranz