我显然是一些黑魔法的受害者......
这是我呈现的模板:
context = Context({'my_cube': c})
template = Template(
'{% load cube_templatetags %}'
'{{ my_cube|inspect }} {{ my_cube.measure }}'
)
以下是inspect
过滤器的实现:
def inspect_object(obj):
return obj.measure()
以下是渲染给我的内容:
>>> template.render(context)
u'6 None'
有谁知道为什么{{my_cube.measure}}没有正确呈现,显然函数调用成功了???
注意:测量功能没有魔力,没有内部状态改变,我测试过它每次给出相同的结果,我也测试了在{{cube.measure}}之前进行检查....什么都不改变。我完全不知道发生了什么......
编辑:
我知道它似乎来自哪里。但它仍然很奇怪。出于某种原因,我的对象的属性未由template.Variable
解决:
>>> Variable('measure').resolve(c) == None
True
>>> Variable('testitesti').resolve(c) == None
True
>>> c.testitesti()
68
#implementation of testitesti :
def testitesti(self):
return 68
答案 0 :(得分:2)
我试图呈现的对象有一个__getitem__
方法,它只是空的,所以dictionnary索引处理这个对象(没有抛出错误),所以当然没有进行函数调用!
答案 1 :(得分:0)
Inspect被注册为过滤器,是吗?我假设其他整个模板都会窒息。是否有可能的保留字冲突?毕竟,inspect
是一个相当负载的术语。您是否尝试将该过滤器重命名为其他内容?