金字塔设置mako.imports不工作

时间:2012-10-06 11:31:33

标签: python pyramid mako

我正在尝试使用mako.imports设置来避免在每个模板文件中导入模块。

最初我在每个模板的顶部都有一个模块级块,如:

<%!
    import logging
%>

我想用.ini文件中的设置替换它:

mako.imports = 'import logging'

当我尝试使用它时,模板只会抛出NameError: name 'logging' is not defined,这不起作用。

似乎mako.imports甚至没有被调用,因为设置如下:

mako.imports = 'import SpamAndEggs'

不会抛出错误。

我正在使用Pyramid 1.3和Mako 0.7.0。

2 个答案:

答案 0 :(得分:2)

pylons-discuss开始,语法为:

mako.imports = 
    import logging 
    import some.other.module 

导入以换行符分隔的语句。我认为文档应该用一个例子说明这一点,因为Python人员的“字符串列表”是相当不同的。

感谢Mike Merickel。

答案 1 :(得分:1)

好的,所以看看金字塔生成的Mako模板代码,它只是输出配置设置,引号,括号和所有内容。

所以,语法必须是:

mako.imports = import logging

多次导入:

mako.imports = import logging, some.other.module

其中任何一个:

mako.imports = 'import logging'
mako.imports = ['import logging', 'some.other.module']
mako.imports = import logging, import some.other.module

最后一个抛出一个mako.exceptions.SyntaxException,因为它不是有效的Python,但前两个无声地失败,什么都不做,因为它们只是输出一个文字作为一行代码。

我没有从documentation推断出这是“Python语句的字符串列表,通常是单独的”导入“行”(但也许我只是没有正确理解它)。

感谢Mike Bayer在Mako上的post