Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 网站模板中的代码正在访问数据库。。。令人不快的_Python_Mako - Fatal编程技术网

Python 网站模板中的代码正在访问数据库。。。令人不快的

Python 网站模板中的代码正在访问数据库。。。令人不快的,python,mako,Python,Mako,我正在使用Python、Mako模板和烧杯缓存。缓存由模板内的块控制: <%block cached="True" cache_key="${id, day, privilege}"> ... </%block> ... 当缓存涉及复杂数据库查询的内容时,我会在缓存块内执行该查询,以便在缓存中找到该块时不会执行该查询: <%block cached="True" cache_key="${id, day, privilege}"> <% data

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

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

...
当缓存涉及复杂数据库查询的内容时,我会在缓存块内执行该查询,以便在缓存中找到该块时不会执行该查询:

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

...

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

在不了解其他设置的情况下:

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

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