Mako模板查找错误:TypeError

时间:2017-08-11 17:35:52

标签: python mako

我有一个很大的mako文件,我目前正在分解为较小的文件,以便于维护。 将main.mako视为我的主要(大型)模板文件 和get_raps.mako作为我需要包含的小文件。

main.mako

<%include file="/get_raps.mako"/>

get_raps.mako

% for rap in rapset.raps:
  <% print rap %>
%endfor

在我的代码中:

dirlookup = TemplateLookup(directories=[
        os.path.join(
            os.path.dirname(__file__),
            'templates'
        )])

template = Template(
            filename=os.path.join(
                os.path.dirname(__file__),
                'templates',
                'LegacyXML.mako'
            ),
            output_encoding="utf-8",
        lookup=dirlookup
    )

当我运行时,我收到一个错误:

 {'coset': <models.Coset.Coset object at 0x109daf990>, 'rap': <models.Raps.Rap.Rap object at 0x109dafa50>}
    {'coset': <models.Coset.Coset object at 0x109dafd50>, 'rap': <models.Raps.Rap.Rap object at 0x109daf550>}
    {'coset': models.Coset.Coset object at 0x109dafd90>, 'rap': <models.Raps.Rap.Rap object at 0x109dafe10>}

 File "/usr/local/lib/python2.7/site-packages/mako/runtime.py", line 899, in _exec_template
        callable_(context, *args, **kwargs)
      File "_get_raps_mako", line 30, in render_body
    TypeError: 'Undefined' object is not callable

我知道我正在使用数据到达小文件,但为什么我会收到类型错误? 我错过了一些非常明显的东西吗?谢谢

1 个答案:

答案 0 :(得分:0)

我认为这是你需要改变的声明:

<%include file="/get_raps.mako"/>

因为include语句需要文件的正确路径。您确定将文件保留在根目录中吗? (为什么?)