【问题标题】:Getting last element of a nested list in Django template?在 Django 模板中获取嵌套列表的最后一个元素?
【发布时间】:2014-05-23 09:53:21
【问题描述】:

我的模板中有一个列表,类似于:

[[('a', 'b', 'c')], ['d', 'e', 'f'], ['g', 'h', 'i']](但列表长度并不总是相同)

我想访问此列表中的 2 个元素:

  • 第一个子列表的第一个元素(这里是'a')。简单:{{ the_list.0.0 }}
  • 最后一个子列表的第一个元素(这里是'g')。这个怎么做?

我试过{{ the_list|last.0 }}但它不起作用。

谢谢。

【问题讨论】:

    标签: django django-templates


    【解决方案1】:

    怎么样:

    {% with last_element=the_list|last %}
        {{ last_element.0 }}
    {% endwith %}
    

    【讨论】:

    • 啊,聪明,没想到 :) 因为我实际上已经在同一代码中出于另一个原因使用了 withtag,我想在我的情况下使用自定义标签会更好(见我的回答)而不是嵌套withtags,对吧?
    • 这取决于哪种解决方案可以让您的代码更简洁、更易于理解。就我个人而言,我会坚持使用 {% with %} 语句,它是一个模板标签少维护:)
    【解决方案2】:

    我用自定义标签编辑它。 如果没有其他方法,我会将其标记为正确答案。

    @register.filter
    def first_of_last_sublist(input_list):
        try:
            return input_list[-1][0]
        except:
            return input_list
    

    【讨论】:

      【解决方案3】:

      {{ the_list|last }} 会给你['g' , 'h', 'i']

      那就试试{{ {{ the_list|last }}.0 }}

      【讨论】:

      • 你不能使用这样的模板。您需要使用{% with %} 创建一个临时变量。
      猜你喜欢
      • 1970-01-01
      • 2013-01-29
      • 1970-01-01
      • 2012-04-02
      • 2023-03-22
      • 2017-02-18
      • 2011-05-16
      • 1970-01-01
      • 2015-10-15
      相关资源
      最近更新 更多