关于如何优化Django中的数据库查询,有几个规则。其中一个是^{}。在模板(HTML文件)中使用iterator
有意义吗?或者当我用for
语句在模板中循环时,它已经是一个迭代器,不需要额外的优化?你知道吗
示例:
{% for item in items.all%}
{{ item.name }}
{% endfor %}
与
{% for item in items.all.iterator %}
{{ item.name }}
{% endfor %}
更新:
查询经常运行,因此需要基本的缓存。你知道吗
Tags:
根据对这个问题的评论,我决定用一个完整的答案来概括一切。你知道吗
Django模板链接到视图,因此它与一般Python模块中的
iterator
具有相同的优化逻辑。你知道吗在下面的例子中没有优化,因为视图和模板经常被使用。甚至值得一提的是:在这种情况下没有db查询缓存。你知道吗
最佳实践是将主要业务逻辑放在视图中。所以您应该在视图中放置
items.all()
,在模板中只使用items
。你知道吗使用
iterator()
的好例子并不多。主要是有一个句子,如果调用query一次,就应该使用iterator()
。我想说的是,当查询调用不经常使用时,应该使用iterator()
。例如,如果您在web商店中销售了某些商品并生成了ThankYou
页。您可以在“谢谢”页面显示订单和订单中的项目。在这种情况下,查询是非常独特的,不经常调用,可能只调用一次。另外,对于带有订单信息的“谢谢”页面上的未来请求,不需要缓存。你知道吗相关问题 更多 >
编程相关推荐