Django模板中如何将函数的变量作为字典key并获取对应的value

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了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值