访问数据库的网站模板中的代码......不好?

时间:2014-03-11 09:36:27

标签: python mako

我正在使用Python,Mako模板和Beaker缓存。缓存由模板内的块控制:

<%block cached="True" cache_key="${id, day, privilege}">
...
</%block>

当我缓存涉及复杂数据库查询的内容时,我在缓存块中执行该查询,因此如果在缓存中找到该块,则不会执行该查询:

<%block cached="True" cache_key="${id, day, privilege}">
<%
data = db_interface.do_that_query()
%>
...
</%block>

对于未缓存的所有内容,我在调用模板之前查询数据,并传递数据而不是数据库句柄。在业务逻辑和模板中查询数据库感觉很乱,但有没有更好的方法呢?

1 个答案:

答案 0 :(得分:0)

没有其他设置知识:

如果您的<%block />包含有条件地确定缓存数据是否可用的逻辑并发出查询,那么初始查询(通过'业务逻辑')肯定是多余的。

只需在没有初始查询的情况下调用模板,您就可以废弃“业务逻辑”代码。