从Django temp访问容器的方法

2024-06-20 15:13:23 发布

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

我有一个Python对象,它是container子类的一个实例。所以这个对象x,可以表现得像x['name']。这个对象也有方法,比如x.bar()。你知道吗

如何从Django模板调用x.bar?在模板中,x.bar将始终首先作为x['bar']计算,这将给出None。你知道吗

我能想到的最好办法是创建一个对象阴影x,它没有getitem。但是我不能delattr__getitem__。你知道吗

有更好的主意吗?缺少在上下文或模板标记中手动传递这些调用的结果。你知道吗

谢谢。你知道吗


Tags: 对象django实例方法namenone模板container
1条回答
网友
1楼 · 发布于 2024-06-20 15:13:23

这是Django模板执行表达式求值的方式中的一个基本缺陷。查看模板标记^{}以获得解决方法。例如,{% expr x.bar(1,2,3) as snort %}在当前上下文中为您提供一个名为snort的新变量。你知道吗

或者,您可以尝试Jinja2模板。它们与Django非常接近,但是它们允许使用完整的Python。你知道吗

注意:Jinja2与Django的模板系统不同,如果您使用的是任何依赖于模板系统的嵌入Django应用程序的页面,这可能会破坏它们。对于{% expr %}标记,情况并非如此。你知道吗

相关问题 更多 >