【问题标题】:How to display array value in Django template?如何在 Django 模板中显示数组值?
【发布时间】:2019-04-18 20:07:48
【问题描述】:

我有以下数组,想在模板中显示日期名称。

DAYS = ((0, "Saturday"),
        (1, "Sunday"),
        (2, "Monday"),
        (3, "Tuesday"),
        (4, "Wednesday"))

我可以使用{{ DAYS.2.1 }} 显示星期一,但我无法使用{{DAYS.class_weekday.key_value.1}} 显示。

我从 for 循环中得到 class_weekday.key_value,但是当我在那里使用 class_weekday.key_value 时,它什么也没显示!

谢谢!

【问题讨论】:

    标签: python django python-3.x django-rest-framework django-templates


    【解决方案1】:

    你可以使用

    {{ instance.get_day_display }}
    

    在您的模板中。即选择显示值而不是数据库值。

    如果要显示所有值:

    [ x for x, y in DAYS ]
    

    将返回一个包含天数列表的列表,

    【讨论】:

    • 谢谢!我没有在模板中使用 for 循环。 DAYS 数组在模板中可用,但我只想显示基于键的值,即星期一的 {{ DAYS[2] }}。
    • 你知道如何使用 for 循环中的 weekday.key_value 即 {{DAYS.weekday.key_value.1}} 来显示日期名称吗?当我在那里使用 weekday.key_value 时,它​​什么也没有显示!谢谢!
    【解决方案2】:

    根据 django

    https://docs.djangoproject.com/en/1.10/ref/templates/api/#variables-and-lookups

    变量和查找

    变量名称必须由任意字母 (A-Z)、任意数字 (0-9)、下划线(但不得以下划线开头)或点组成。

    点在模板渲染中具有特殊的含义。变量名中的点表示查找。具体来说,当模板系统在变量名中遇到点时,它会按以下顺序尝试以下查找:

    Dictionary lookup. Example: foo["bar"]
    Attribute lookup. Example: foo.bar
    List-index lookup. Example: foo[bar]
    

    请注意,如果模板上下文中存在变量“bar”,则 {{ foo.bar }} 等模板表达式中的“bar”将被解释为文字字符串,而不使用变量“bar”的值。

    因此您可以为此目的使用自定义过滤器。

    您可以制作自定义模板过滤器:

    #here, import DAYS
    @register.filter
    def return_day(i):
        try:
            return DAYS[i][1]
        except:
            return N.A
    

    在模板中

    {{ class_weekday.key_value|return_day }}
    

    【讨论】:

      【解决方案3】:

      你想要的是DAYS[2][1] :)

      【讨论】:

      • 这没有提供问题的答案。要批评或要求作者澄清,请在他们的帖子下方留下评论。 - From Review
      • this clairly 回答了@stovfl 的问题,他只想显示“星期一”,现在他只打印一个元组,需要额外的 [1],其他人在评论中发布了相同的内容这就是答案......
      猜你喜欢
      • 1970-01-01
      • 2014-06-27
      • 2011-07-10
      • 2017-11-13
      • 2014-12-02
      • 2016-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多