在我为Django视图创建的模板中,我传递了一个名为Item
的额外变量。
此Item
对象具有其包含的值的字符串表示形式。它看起来像这样:
class Item:
value = ''
previous_item = Item
def __str__(self):
return '%s > %s' % (value, previous_item)
通过这种方式,您可以获得一系列项目:value_x > value_y > value_z
问题是现在我希望能够打印我注入模板的vars
对象的Item
,就像Python中的vars()
函数一样:
>>> item = Item('FooBar', None)
>>> vars(item)
在我的模板中,我想做同样的事情:
<div>
{{ item }}. {# prints `value_x > value_y > value_z` #}
{{ vars item }} {# should print <Item: value_x, None> or something like that #}
</div>
有没有办法在模板中使用pythons vars()
?
所以现在我使用了一种非常缓慢的方法。
要获取模板变量的vars
,请在渲染模板之前自己将变量添加到上下文中:
ctx = super(MyView, self).get_context(*args, **kwargs)
ctx['vars'] = vars(self)
ctx['item_vars'] = vars(self.item)
return ctx
答案 0 :(得分:0)
我在Paandittya的帮助下制作了一个简单的解决方案,指出了另一个question,在这种情况下看起来有点像我需要的那样:
@register.simple_tag
def var(value)
return vars(value)
然后在模板中加载标签并调用它:
{% load my_tags %}
{% var item %}