【发布时间】:2013-07-26 22:26:32
【问题描述】:
假设我有一个这样的字典:
dic = {'1': 'string', 1 :'integer'}
当我将它传递给 django 模板并尝试访问 dic.1 时,它总是返回 'string'。
如果我删除密钥'1',则dic.1 返回'integer'。
我知道我可以为此使用自定义标签,例如:
from django import template
register = template.Library()
@register.filter
def get_key(value, arg):
return value.get(arg, None)
然后{{ dic|get_key:1 }} 工作正常。
但是,有没有办法直接访问整数/浮点键而不使用自定义标签?
【问题讨论】:
-
为什么你有一个 2 键共享相同名称的字典?一开始这是一个非常糟糕的主意。如果我对 dict 的理解正确,那么每次您使用已使用的名称制作密钥时,您都会覆盖密钥中的旧数据
-
@Zamphatta 不,你没有正确理解字典,
'1'和1是两个不同的键。 -
有一个最丑的方法:{% for k, v in dic.items %}{% ifequal k '1' %}{% endifequal %}{% endfor %}。但我真的会避免这种情况。但读到 (stackoverflow.com/questions/2970244/…) 我认为没有比模板标签更好的解决方案了。
-
@Ricola3D 嗯,我想我应该开始使用 jinja-templates,它允许标签内有
dic[1]语法。 -
你能解释一下你为什么要这样做吗?这听起来像个坏主意。这样一来,您的代码就更难阅读和维护了。