![](/img/trans.png)
[英]Flask and Jinja2 - Filter is jinja2.exceptions.UndefinedError: 'convert_date_to_name' is undefined
[英]How to make Jinja2 convert all UndefinedError exceptions to blank strings?
我的代码中的很多模型都有关系,可以是None。 很多时候,这需要在访问数据之前检查None
:
{% if foo.bar %}
{{ foo.bar.baz }}
{% endif %}
如果我不添加该检查,则该页面会完全出现UndefinedError。 从Flask应用程序运行时,有没有什么方法可以让我在Jinja2中默默地失败UndefinedErrors?
只需创建一个jinja2.Undefined
的子类,它在属性访问时返回自己,并通过覆盖create_jinja_environment
方法将其设置为您环境的Undefined类型:
from flask import Flask
from jinja2 import Undefined
from werkzeug.datastructures import ImmutableDict
class MalleableUndefined(Undefined):
def __getitem__(self, key):
return self
def __getattr__(self, key):
return self
class CustomFlask(Flask):
def create_jinja_environment(self):
self.jinja_options = ImmutableDict(undefined=MalleableUndefined, **self.jinja_options)
return super(CustomFlask, self).create_jinja_environment()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.