我读过this,我有一个这样的数组:
context[u'erreurs'] = {
'aa': {'titres': [], 'liste': [], 'urls': []},
'bb': {'titres': [], 'liste': [], 'urls': []},
'...': {'titres': [], 'liste': [], 'urls': []}
}
如果出现错误,'titres'
,'liste'
和'urls'
将成为字符串数组,并填充了足够的值。
在我的模板中,如果设置了erreur,我会这样做:
{% for idx, tab in erreurs.items %}
<ul>
{% for e in tab.liste %}
{% if user.is_authenticated %}
<li><a href="{{ tab.urls[forloop.counter0] }}">{{ e }}</a></li>
{% else %}
<li>{{ e }}</li>
{% endif %}
{% endfor %}
</ul>
{% endfor %}
我想使用当前索引来使用另一个数组中的值,此处为:tab.urls
。它不起作用并给我错误:
Could not parse the remainder: '[forloop.counter0]' from 'tab.urls[forloop.counter0]'
如何解决这个问题?
答案 0 :(得分:1)
不幸的是,Django的模板不支持这种语法。您应该将自定义模板过滤器放在一起:
# yourapp/templatetags/yourapp_tags.py:
from django import template
register = template.Library()
@register.filter
def at_index(array, index):
return array[index]
并使用它:
{% load yourapp_tags %}
{{ tab.urls|at_index:forloop.counter0 }}
答案 1 :(得分:0)
您需要创建一个代表数据的实际模型,然后任务变得微不足道
class YourModel(object):
titre = ''
liste = ''
url = ''
context[u'erreurs'] = {
'aa': [], # List of model
}
{% for idx, tab in erreurs.items %}
<ul>
{% for model in tab %}
{{ model.titre }}
{{ model.liste }}
{{ model.url }}
{% endfor %}
</ul>
{% endfor %}