【问题标题】:Pyramid setting mako.imports not working金字塔设置 mako.imports 不起作用
【发布时间】:2012-09-27 09:14:31
【问题描述】:

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

【问题讨论】:

    标签: python pyramid mako


    【解决方案1】:

    来自pylons-discuss,语法为:

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

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

    感谢 Mike Merickel。

    【讨论】:

      【解决方案2】:

      好的,看看 Pyramid 生成的 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,但前 2 个无声无息地失败,什么也不做,因为它们只是将文字输出为一行代码。

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

      感谢 Mike Bayer 在 Mako 上的 post

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-08-09
        • 1970-01-01
        • 1970-01-01
        • 2013-09-23
        • 2017-06-02
        • 1970-01-01
        相关资源
        最近更新 更多