当前位置:  开发笔记 > 编程语言 > 正文

django模板问题(访问列表)

如何解决《django模板问题(访问列表)》经验,为你挑选了1个好方法。

我正在为我的第一个django网站写一个模板.

我将一个字典列表传递给变量中的模板.我还需要传递一些其他包含布尔标志的列表.(注意:所有列表都有相同的长度)

模板看起来像这样:


    First page
        {% for item in data_tables %}
        
{% if level_one_flags[forloop.counter-1] %}
Premier League {% endif %}
Junior league
Member count {% if level_two_flags[forloop.counter-1] %}
Ashtano League {% endif %}
{% endfor %}

我收到以下错误:

模板错误

在模板/mytemplate.html中,第7行的错误无法解析余数:'[forloop.counter-1]'来自'level_one_flags [forloop.counter-1]'

我,并不感到惊讶,我得到这个错误,因为我只是想看看是否会起作用.到目前为止,从文档中,我还没有找到如何通过索引获取列表中的项目(即除枚举之外).

有谁知道我如何通过模板中的索引访问列表?



1> Craig Trader..:

简而言之,Django不会做你想要的.

该for循环具有多个在一个循环中有用的性质.

forloop.counter     The current iteration of the loop (1-indexed)
forloop.counter0    The current iteration of the loop (0-indexed)
forloop.revcounter  The number of iterations from the end of the loop (1-indexed)
forloop.revcounter0 The number of iterations from the end of the loop (0-indexed)
forloop.first       True if this is the first time through the loop
forloop.last        True if this is the last time through the loop
forloop.parentloop  For nested loops, this is the loop "above" the current one

你可以使用forloop.counter0来获得你想要的从零开始的索引; 遗憾的是,Django模板语言不支持变量数组索引(你可以做{{ foo.5 }},但你做不到{{ foo.{{bar}} }}).

我通常做的是尝试在视图中排列数据,以便更容易在模板中呈现.例如,您可以在视图中创建一个由字典组成的数组,这样您所要做的就是遍历数组并从各个字典中精确提取所需内容.对于非常复杂的事情,我甚至创建了一个DataRow对象,它可以正确地格式化表中特定行的数据.

推荐阅读
跟我搞对象吧
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有