python - 出现错误 : TemplateAssertionError: no filter named 'n' when printing report?

标签 python templates odoo

我正在尝试打印我使用 Odoo 构建的自定义模块的报告,但是当我尝试打印时出现以下错误:

  File "/opt/odoo/openerp/service/report.py", line 93, in go
    result, format = openerp.report.render_report(cr, uid, ids, object, datas, context)
  File "/opt/odoo/openerp/report/__init__.py", line 40, in render_report
    return registry['ir.actions.report.xml'].render_report(cr, uid, ids, name, data, context)
  File "/opt/odoo/openerp/api.py", line 241, in wrapper
    return old_api(self, *args, **kwargs)
  File "/opt/odoo/openerp/addons/base/ir/ir_actions.py", line 155, in render_report
    return new_report.create(cr, uid, res_ids, data, context)
  File "/opt/odoo/addons/report_webkit/webkit_report.py", line 376, in create
    result = self.create_source_pdf(cursor, uid, ids, data, report_xml, context)
  File "/opt/odoo/openerp/report/report_sxw.py", line 461, in create_source_pdf
    return self.create_single_pdf(cr, uid, ids, data, report_xml, context)
  File "/opt/odoo/addons/report_webkit/webkit_report.py", line 334, in create_single_pdf
    head_mako_tpl = mako_template(header)
  File "/opt/odoo/addons/report_webkit/webkit_report.py", line 88, in mako_template
    return mako_template_env.from_string(text)
  File "/usr/local/lib/python2.7/dist-packages/Jinja2-2.6-py2.7.egg/jinja2/environment.py", line 769, in from_string
    return cls.from_code(self, self.compile(source), globals, None)
  File "/usr/local/lib/python2.7/dist-packages/Jinja2-2.6-py2.7.egg/jinja2/environment.py", line 493, in compile
    self.handle_exception(exc_info, source_hint=source)
  File "<unknown>", line 24, in template
TemplateAssertionError: no filter named 'n'

我在谷歌上搜索了很多,但找不到任何关于如何解决该问题的线索。

我正在使用 webkit 报告。这是我的 .mako 文件。

<html>
<head>
    <style type="text/css">

    </style>
</head>
   <body>
Testing
</body>
</html>

这就是我从 .py 文件调用报告的方式

report_sxw.report_sxw('report.hotel.webkit',
                      'hotel.webkit',
                      'addons/hotel_webkit/report/report_hotel.mako',
                      parser=report_webkit_html)

最后是 XML 调用

    <report id="sim.report_sim_hotel"
        name="hotel.webkit"
        auto="False"
        model="sim.resumen_wizard" 
        file="hotel_webkit/report/report_hotel.mako" 
        string="Hotel Report Test" 
        webkit_header="base_headers_webkit.base_reports_portrait_header"
        report_type="webkit"/>

任何关于该错误意味着什么以及我还可以测试什么以使报告正常工作的线索将不胜感激。

谢谢

最佳答案

我刚刚解决了我们发票的这个问题。

Odoo 从 v7 中的 Mako 切换到 v8 中的 Jinja2,使用“模拟”Mako 表示法,其中大多数功能与以前一样。内联 Python 代码不会,这个“n”过滤器不会。

您必须从 Mako 的“|n”切换到 Jinja2 的“|safe”(此过滤器意味着“不要转义”——通常应用于返回 HTML 的内容)。

如果您没有在模板中使用它,它可能位于您的基本 header 中!

我们有一条线

${_debug or ''|n}

在那里应该读

${_debug or ''|safe}

对于 Odoo。

关于python - 出现错误 : TemplateAssertionError: no filter named 'n' when printing report?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28356590/

相关文章:

python - 在没有类实例化的情况下调用类方法的装饰器?

python - 在汇源图中寻找最小加权匹配

Python zip 对两个 numpy 数组进行压缩

c++ - 从表中检索混合数据类型的模板化 get 方法

odoo - 如何在 Odoo 上制作 Controller 以获得自定义值?

odoo - 我们可以为 Many2many 生成的表制作 TreeView 吗

python - 使用自定义语料库在 NLTK 中训练 NER 模型

c++ - 特定类模板类型的模板化类方法的不同实现

c++ - 调用模板函数时出现歧义

python - 如何在odoo中获取.rml报告中的字段值?