在Jinja2中正确处理类型错误的方法是什么

2024-05-29 01:53:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我在jinja2模板(减法)中做一些简单的计算,希望找到一个解决方法来处理jinja2中的类型错误。在

到目前为止,我一直在尝试:为了在呈现过程中忽略不可用的变量,我将Undefined()子类化为这样的子类。在

def silently(*args, **kwargs):
    return u''

return_new = lambda *args, **kwargs: SilentUndefined()

class SilentUndefined(Undefined):
    __unicode__ = silently
    __str__ = silently
    __call__ = return_new
    __getattr__ = return_new

这种方法在大多数情况下都有效,但减法除外,例如:

^{pr2}$

我想,我可以像这样忽略“TypeError”异常,但它不起作用。在

class TypeError():
    pass

我就是这样做的。。。在

with open (reportEmailTemplate, "r") as myfile:
    reportEmailTemplateHTML = myfile.read()       
    #apply context to coverpage
    t = Template(reportEmailTemplateHTML, undefined=SilentUndefined)
    renderedReportEmailTemplate = t.render(context)   

Tags: 方法jinja2newreturncontextargsmyfile子类
1条回答
网友
1楼 · 发布于 2024-05-29 01:53:23

在第一个近似值中,将计算函数移出Jinja并将它们保留在Python中,听起来更符合逻辑,也更符合Jinja2的行。在

def some_simple_calculation(*args, **kwargs):
    # handle errors here

t = Template(reportEmailTemplateHTML)
t.globals['some_simple_calculation'] = some_simple_calculation

renderedReportEmailTemplate = t.render(context)

在你的模板里

^{pr2}$

相关问题 更多 >

    热门问题