如何在 Django 模板中显示数组值?

Posted

技术标签:

【中文标题】如何在 Django 模板中显示数组值?【英文标题】:How to display array value in Django template? 【发布时间】: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 时,它什么也没显示!

谢谢!

【问题讨论】:

【参考方案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],其他人在评论中发布了相同的内容这就是答案......

以上是关于如何在 Django 模板中显示数组值?的主要内容,如果未能解决你的问题,请参考以下文章

如何迭代Django中数组中的所有值

如何使用 django 在模板中显示默认值?

Django:如何在给定实际值和选项的情况下访问模板中 ChoiceField 的显示值?

Python - 如何在 django 模板中为所有值并排显示两个键的字典值

如何在我的模板中显示数组值?

如何将数据值从视图传递到 Django 中的模板?