【发布时间】:2015-11-14 18:51:21
【问题描述】:
假设我有一个为 django 编写的基本自定义模板标签。在我的模板中,假设我这样使用它:
{% do_something "x" %}
{% do_something "y" %}
{% do_something "z" %}
do_something 需要从模型(即数据库)中获取信息,这些信息由标签呈现。我是否正确假设每次我在模板中添加对 do_something 的调用时,django 都会调用我的数据库?
如果是这样,我想找到一个替代解决方案,我能想到的唯一解决方案是:
编写一个“响应后处理器”中间件,该中间件将解析呈现的响应以查找某种占位符,例如 __x__、__y__ 等,整理它们,执行单个分组查询,然后将占位符替换为相关内容。
这对我来说似乎相当“hacky”,只是感觉不对。这是我唯一的选择吗?
【问题讨论】:
-
我不知道 do_something 是做什么的,但是按照它的编写方式,你能做一些像
{% do_something "x", "y", "z" %}这样的事情吗? do_something 会为所有 3 渲染所有东西?那样的话,如果你在 template_tag 中做你的逻辑,你只会访问一次数据库。
标签: django django-templates django-template-filters