Django模板中如何将函数的变量作为字典key并获取对应的value
问题
现有一字典
mydict = {'abc': 123}
key = 'abc'
传入到模板后
在模板html中你可能像下面这样,来取出字典的值
{% block base %}
...
{{ mydict[key] }}
...
{% endblock %}
但在模板中并不支持Python列表下标和切片的方法来获取元素
在一般情况下你可以这样获取一个字典的value:
{% block base %}
...
{{ mydict.key }}
...
{% endblock %}
然鹅,当这个key是一个某个函数的变量时,比如key是函数func()
的变量var
def func():
var = 'abc'
如何将func中的变量var的值abc
作为字典的键在模板中获取对应的值123?
{% block base %}
...
{{ mydict.func.var }}
...
{% endblock %}
用以上方法获取属性无法得到想要的结果,会报错,提示字符无法解析
解决办法:
在对应模板的视图中重写一个字典获取值的方法:
from django.template.defaulttags import register
@register.filter
def get_item(dictionary, key):
return dictionary.get(key)
在html中这样写:
{% block base %}
...
{{ mydict|get_item:func.var }}
...
{% endblock %}
然后就可将函数func
中的变量var
作为字典的键获取相应的值123了