使用Django中的模板变量访问嵌套列表数据

时间:2018-07-17 18:23:42

标签: python django django-templates

我需要访问嵌套列表fdata中的数据,但是使用模板变量ij访问它们时却什么也没得到。我可以使用类似{{ fdata.1.0 }}的值来访问这些值。

这是上下文数据

fdata = [[0, 0, 0], [4, 1, 2], [1, 0, 0], [0, 0, 0], [0, 0, 0]]

flabels = ['image', 'video', 'document']

users = [<User: admin>, <User: test>, <User: neouser>, <User: hmmm>, <User: justalittle>]

这是模板中的代码。

{% for file_type in flabels  %}
    {
        {% with i=forloop.counter0 %} 
        label: {{file_type}},
        data: [            
            {% for user in users %}
                {% with j=forloop.counter0 %}
                    {{ fdata.j.i }},                                  
                {% endwith %}
            {% endfor %}                
        ],
        {% endwith %}
    }
{% endfor %}

1 个答案:

答案 0 :(得分:1)

我敢肯定您不能fdata.j.i

您可以使用模板标签...

创建一个名为templatetags的文件夹,并在其中创建一个文件(我将其称为table_templatetags.py提示:请确保创建一个名为__init__.py的空文件,以便django可以理解可以读取该文件夹

app / templatetags / table_templatetags.py

from django import template

register = template.Library()

@register.simple_tag(name='get_pos')
def get_position(item, j, i): 
    return item[j][i]

在您的HTML中

<!-- Place this load in top of your html (after the extends if you using) -->    
{% load table_templatetags %} 

<!-- The rest of your HTML -->

{% for file_type in flabels  %}
    {
        {% with i=forloop.counter0 %} 
        label: {{file_type}},
        data: [            
            {% for user in users %}
                {% with j=forloop.counter0 %}
                    {% get_pos fdata j i %}, <!-- Call your brand new templatetag -->
                {% endwith %}
            {% endfor %}                
        ],
        {% endwith %}
    }

一些摘要地雷:https://github.com/Diegow3b/django-utils-snippet/blob/master/template_tag.MD

Django文档:https://docs.djangoproject.com/pt-br/2.0/howto/custom-template-tags/