【问题标题】:Django templating - accessing dictionary value using a template variableDjango模板 - 使用模板变量访问字典值
【发布时间】:2014-02-01 18:48:27
【问题描述】:

这是来自我的views.py的数据:

gradebook_data = {
    'G5A': [...],
    'G5B': [...],
    ...
}

sections = [
    ('G5A': '5-Einstein'),
    ('G5B': '5-Bohr'),
    ...
]

在我的模板中,我想迭代各个部分并在 for 循环中显示成绩簿数据,如下所示...

{% for code, section in sections %}
    <td>{{ gradebook_data.code }}</td>
{% endfor %}

这是行不通的,因为在 Django 中,它会尝试对 gradebook_data['code'] 进行字典查找,而我想做的是获取 gradebook_data['G5A']

有人知道解决方法或可以指出我的错误吗?我已经为此花费了一整天。

使用 PHP 的 Twig 模板库很容易做到这一点。

【问题讨论】:

    标签: python django django-templates


    【解决方案1】:

    如果您使用的是 Django 模板系统,则可以注册一个自定义过滤器,该过滤器已在 SO 上多次记录用于此目的。例如,here

    【讨论】:

    • 我考虑过制作自己的过滤器。但是,我希望有更好或更简单的方法,因为这是一个非常常见的用例。
    • 同意,但是如果你习惯在 Django 中工作,这真的很容易,而且一旦你完成了一次,下次会很容易......
    • @dashmug 在视图函数中你真的应该将数据更多地按摩到你以后想在模板中使用的表单中
    • @Anentropic 经过大量研究,我意识到了这一点。只是觉得它增加了更多的复杂性。就我而言,您能否为上面的gradebook_data 提出一个更好的结构?
    • @dashmug 为什么不将它们组合成一个数据结构,例如gradebook_data = {'G5A': ('5-Einstein', [...]), ...}
    猜你喜欢
    • 1970-01-01
    • 2014-10-05
    • 2011-01-05
    • 2014-02-08
    • 2021-04-10
    • 2016-02-29
    • 2013-12-03
    • 2021-10-17
    相关资源
    最近更新 更多