【问题标题】:Django templates filter order of executionDjango 模板过滤器执行顺序
【发布时间】:2013-11-27 09:18:15
【问题描述】:

我想将一个变量(标识符)与一个字符串(“charge”)连接起来,然后将其用作嵌套 dict(attributes) 的键,这是我当前失败的代码:

attributes|valuebykey:"charge"|add:identifier

我想我需要类似的东西(基本上改变执行顺序):

attributes|valuebykey:("charge"|add:identifier)

但这种语法似乎不起作用

过滤器:(只是从字典中获取一个值)

@register.filter
def valuebykey(d, k):
    try:
        ret = d.get(k)
        if ret is None:
            ret = ''
    except:
        ret = ''
    return ret

知道如何更改执行顺序,或者有一个带有 3 个单独参数的过滤器吗?或任何其他方式我可以在嵌套字典中找到一个值,其键是一个 var 和一个字符串的连接?

谢谢!

【问题讨论】:

  • 这听起来像是模板标签而不是过滤器的工作! :)

标签: django templates filter


【解决方案1】:

你可以这样做:

{% with key="charge"|add:identifier %}
    {{ attributes|valuebykey:key }}
{% endwith %}

【讨论】:

  • 哦,那真是太好了,我现在看到自己重写了相当多的模板......谢谢!
猜你喜欢
  • 2020-07-10
  • 2012-06-10
  • 2011-04-12
  • 2013-06-09
  • 1970-01-01
  • 2013-07-18
  • 2012-06-03
  • 1970-01-01
  • 2010-09-18
相关资源
最近更新 更多