我试图使用mako.imports设置来避免在每个模板文件中导入模块。在
最初,我在每个模板的顶部都有一个模块级块,比如:
<%!
import logging
%>
我想用.ini文件中的设置替换它:
^{pr2}$这不起作用,因为当我尝试使用模板时,它只是抛出NameError: name 'logging' is not defined
。在
看起来mako.进口甚至不会被调用,因为设置如下:
mako.imports = 'import SpamAndEggs'
不会抛出错误。在
我使用的是金字塔1.3和Mako 0.7.0。在
好的,看看金字塔生成的Mako模板代码,它只是直接输出配置设置中的内容,引号,方括号等等。在
因此,语法必须是:
mako.imports = import logging
多个导入为:
mako.imports = import logging, some.other.module
而且不是这些:
最后一个抛出一个
mako.exceptions.SyntaxException
,因为它不是有效的Python,但是前2个抛出的是一个静默的失败,什么也不做,因为它们只是输出一个文本作为一行代码。在我并不是从documentation中推断出这一点的,它读作“Python语句的字符串列表,通常是单个的”import“行”(但可能我只是没有正确理解它)。在
感谢迈克·拜尔对Mako的post。在
从pylons-discuss开始,语法是:
导入由换行符分隔的语句。我认为文档应该用一个例子来说明这一点,因为Python用户的“字符串列表”是非常不同的。在
多亏了迈克·梅里克尔。在
相关问题 更多 >
编程相关推荐