我需要访问嵌套列表fdata
中的数据,但是使用模板变量i
和j
访问它们时却什么也没得到。我可以使用类似{{ 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 %}
答案 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/