【问题标题】:Code in website templates accessing database... bad?访问数据库的网站模板中的代码...不好?
【发布时间】:2014-03-11 09:36:26
【问题描述】:

我正在使用 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>

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

【问题讨论】:

    标签: python mako


    【解决方案1】:

    在不了解您的设置的情况下:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多