2011-12-16 84 views
1

我有一个使用模板来显示长查询集(> 800项)的django视图。视图渲染需要几秒钟的时间,并且渲染整个页面完成后,会将其发送到浏览器。相反,我希望模板呈现为迭代器,以便它可以在生成时逐行传输页面(以便我可以在浏览器中看到该页面)。我不想等几秒钟才能看到任何东西。我的查看返回render_to_response('view_name.html', {items:myitems})Django模板 - 呈现为迭代器

是否正如我在Django中所描述的那样将模板呈现给迭代器?

+0

除了由jdi提出的解决方案...你看过你的查询集生成的查询吗?也许你可以在那里做一些优化?您的查询是否多次触及数据库(例如,显示关系)? – 2011-12-16 17:41:31

回答

3

不通过模板,没有。

您可以将HttpResponse作为迭代器,逐行生成输出,但模板渲染是一个全合一的过程(因为需要解析块等)。

1

你的选择是使用分页: https://docs.djangoproject.com/en/dev/topics/pagination/

或者使用AJAX。您将加载您的页面,然后通过ajax请求请求数据。看看jQuery。

编辑
添加更多的联系 这里是有人使用jQuery的例子,有一个迭代一个HttpResponse:http://forum.jquery.com/topic/ajax-partial-response

这里是有人返回从文件系统上的文件的分块响应的例子: http://djangosnippets.org/snippets/365/

+0

用于提示ajax的+1 ...但Django支持渲染到迭代器吗? – 2011-12-16 16:32:00