在模板中使用iterator()优化Django数据库查询

2024-04-25 18:52:07 发布

您现在位置:Python中文网/ 问答频道 /正文

关于如何优化Django中的数据库查询,有几个规则。其中一个是^{}。在模板(HTML文件)中使用iterator有意义吗?或者当我用for语句在模板中循环时,它已经是一个迭代器,不需要额外的优化?你知道吗

示例:

{% for item in items.all%}
    {{ item.name }}
{% endfor %}

{% for item in items.all.iterator %}
    {{ item.name }}
{% endfor %}

更新: 查询经常运行,因此需要基本的缓存。你知道吗


Tags: 文件djangonamein模板数据库for规则
1条回答
网友
1楼 · 发布于 2024-04-25 18:52:07

根据对这个问题的评论,我决定用一个完整的答案来概括一切。你知道吗

Django模板链接到视图,因此它与一般Python模块中的iterator具有相同的优化逻辑。你知道吗

在下面的例子中没有优化,因为视图和模板经常被使用。甚至值得一提的是:在这种情况下没有db查询缓存。你知道吗

{% for item in items.all.iterator %}
    {{ item.name }}
{% endfor %}

最佳实践是将主要业务逻辑放在视图中。所以您应该在视图中放置items.all(),在模板中只使用items。你知道吗

使用iterator()的好例子并不多。主要是有一个句子,如果调用query一次,就应该使用iterator()。我想说的是,当查询调用不经常使用时,应该使用iterator()。例如,如果您在web商店中销售了某些商品并生成了ThankYou页。您可以在“谢谢”页面显示订单和订单中的项目。在这种情况下,查询是非常独特的,不经常调用,可能只调用一次。另外,对于带有订单信息的“谢谢”页面上的未来请求,不需要缓存。你知道吗

相关问题 更多 >