我没有找到答案,我确信它很简单,但是我不知道如何让它像Django一样工作,当它找不到变量时
我试图使用Undefined和创建我自己的Undefined,但它给我带来了属性错误等问题
def silently(*args, **kwargs):
return u''
class UndefinedSilently(Undefined):
__unicode__ = silently
__str__ = silently
__call__ = silently
__getattr__ = silently
但当我在这里尝试时,它失败了TypeError: 'unicode' object is not callable
:
你试图任意深入你的未定义数据。
menu_links
未定义,因此Jinja2为您的UndefinedSilently
类创建一个新实例。然后调用这个对象的__getattr__
方法来获得items
属性。这将返回一个空的unicode字符串。然后Python尝试调用它(即menu_links.items()
的()
)。这会产生一个错误,即unicode对象不可调用。在即:
^{1}$如果您希望能够深入到一个级别以上,那么可以创建一个类,该类在每次访问尝试时返回自身,除了
^{pr2}$__str__
和__unicode__
。在相关问题 更多 >
编程相关推荐