Rom*_*dgz 1 python django django-templates
每次尝试访问 Django 模板中的列表时,都会收到此错误。我检查了类似问题的答案,但问题通常是%某处缺少字符或其他字符。据我所知,情况并非如此:
在这里,我传递了一个包含作为键的项目 id 列表和作为每个 id 值的图像 URL 列表的 dict。我知道我应该将它集成到项目模型中,但由于我仍在使用 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]'
Run Code Online (Sandbox Code Playgroud)
另外,昨天我尝试使用 bootstrap4 flex-grid 轻松实现 5 列。由于我使用分页来检索 20 个项目,因此我的想法是对每一行的项目(模型)列表进行切片,例如:
{% for item in items[0:5] %}
Run Code Online (Sandbox Code Playgroud)
而且我也收到了同样的错误,即使这是相关答案中推荐的方法,aboput slicing data through a view.
在这两种情况下,我都找不到问题所在,我认为两者都有某种关联。
我正在使用最新的 Django 1.11.6 和 Python 3.5.2。
您似乎对 Jinja2 语法和Django 模板语法感到困惑。Jinja2 是一个独立的项目,受到Django 的启发,但并未被 Django 本身使用。
在 Django 模板语法中,变量{{...}} 总是使用点表示法,[...]不支持订阅。开箱即用,该语言不支持字典键查找。
您可以编写自定义过滤器来实现此目的,如下所示,由 culebrón 编写:
from django.template.defaulttags import register
@register.filter
def get_item(dictionary, key):
return dictionary.get(key)
Run Code Online (Sandbox Code Playgroud)
然后在模板中:
{{ img_gallery|get_item:item.id|first }}
Run Code Online (Sandbox Code Playgroud)
或者,您可以切换到在 Django 项目中使用 Jinja2,替换内置模板语言:How to use jinja2 as a template engine in Django 1.8
| 归档时间: |
|
| 查看次数: |
1959 次 |
| 最近记录: |