如何在 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:如何在给定实际值和选项的情况下访问模板中 ChoiceField 的显示值?