2011-12-16 12 views
1

テンプレートを使用して長いクエリーセット(> 800個のアイテム)を表示するdjangoビューがあります。ビューのレンダリングには数秒かかり、ページ全体のレンダリングが終了するとブラウザに送信されます。代わりに、Templateをイテレータとしてレンダリングして、生成されたページをラインごとに送信できるようにします(ブラウザにページが表示されるようにします)。私は何かを見る前に数秒待たずにいます。Djangoテンプレート - イテレータへのレンダリング

今すぐビューがrender_to_response('view_name.html', {items:myitems})を返します。

Djangoで記述したように、テンプレートをイテレータにレンダリングしていますか? https://docs.djangoproject.com/en/dev/topics/pagination/

またはAJAXを使用する:

+0

jdiが提案したソリューションの他に...クエリセットで生成されたクエリを見ましたか?多分あなたはそこでいくつかの最適化を行うことができますか?あなたのクエリーは複数回データベースにヒットしますか(例:関係を表示するため)? –

答えて

3

テンプレート経由ではありません。

HttpResponseをイテレータとして扱い、出力を行単位で出力できますが、テンプレートレンダリングはオールインワンプロセスです(ブロックを解決する必要があるため)。

1

あなたのオプションは、ページネーションを使用することです。あなたはあなたのページをロードしてから、ajaxリクエストでデータを要求します。 jqueryをチェックしてください。イテレータと

ここではより多くのリンク を追加、編集
はjqueryのを使用して誰かの一例であり、のHttpResponse:ここではhttp://forum.jquery.com/topic/ajax-partial-response

は、ファイルシステム上のファイルからチャンク応答を返す誰かの例です。 http://djangosnippets.org/snippets/365/

+0

+1 ajaxを提案していますが、Djangoはイテレータへのレンダリングをサポートしていますか? –

+0

いいえ、ページ全体を表すイテレータを作成する場合は、何か手作業で行う必要があると思います。つまり、アイテムはすべてイテレータの塊でレンダリングされます。そして、それをHttpResponseに渡します – jdi

関連する問題