每次尝试访问Django模板中的列表时,我都会收到此错误。我已经检查了类似问题的答案,但问题通常是缺少%
或某些其他角色。只要我能看到,情况就不是这样了:
这里我传递的dict包含一个item id列表作为键,URL列表作为每个id的值。我知道我应该将它集成到项目模型中,但由于我仍在使用SQLite3进行开发,因此无法轻松存储列表。无论如何,我对这个问题很感兴趣。所以:
<a href="{% url 'details_view' item_id=item.id %}"><img class="hover-image" src="{{ img_gallery[item.id][0] }}" alt="">
Exception Value:
Could not parse the remainder: '['item.id'][0]' from 'img_gallery['item.id'][0]'
另外,昨天我尝试使用bootstrap4 flex-grid轻松实现5列。由于我使用分页来检索20个项目,我的想法是切换每行的项目列表(模型),如:
{% for item in items[0:5] %}
而且我也收到了同样的错误,即使这是相关答案中推荐的方法,也可以通过视图传递数据。
在这两种情况下我都找不到问题,我认为两者都有某种关系。
我正在使用最新的Django 1.11.6和Python 3.5.2。
答案 0 :(得分:3)
您似乎对Jinja2语法和Django template syntax之间感到困惑。 Jinja2是一个单独的项目,由Django启发启发,但Django本身并没有使用它。
在Django模板语法中,{{...}}
中的变量始终使用点表示法,不支持[...]
订阅。开箱即用,语言不支持字典键查找。
您可write a custom filter实现此目标,如下所示written by culebrón:
from django.template.defaulttags import register
@register.filter
def get_item(dictionary, key):
return dictionary.get(key)
然后在模板中:
{{ img_gallery|get_item:item.id|first }}
或者,您可以切换到在Django项目中使用Jinja2,替换内置模板语言:How to use jinja2 as a templating engine in Django 1.8