Django模板不呈现Variable的方法

时间:2010-06-24 12:36:11

标签: python django django-templates

我显然是一些黑魔法的受害者......

这是我呈现的模板:

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

2 个答案:

答案 0 :(得分:2)

好吧......我找到了该死的东西!

我试图呈现的对象有一个__getitem__方法,它只是空的,所以dictionnary索引处理这个对象(没有抛出错误),所以当然没有进行函数调用!

答案 1 :(得分:0)

Inspect被注册为过滤器,是吗?我假设其他整个模板都会窒息。是否有可能的保留字冲突?毕竟,inspect是一个相当负载的术语。您是否尝试将该过滤器重命名为其他内容?