首页 > 解决方案 > django中的模板变量

问题描述

当我执行 {{ pair_name.8 }} 它有效时,我正在尝试使用模板变量来访问模板字典

但是 {% with xx=8 %}{{ pair_name.xx }}{% endwith %} 不起作用,请帮忙

标签: djangodjango-viewsdjango-templates

解决方案


我正在尝试使用模板变量来访问模板字典。

Django 模板语言被刻意限制,以防止下标、函数调用(带参数)等。这是为了阻止人们在模板中编写业务逻辑。

您可以实现自定义模板过滤器来执行下标查找,或使用Jinja模板引擎。但可能更优雅的方法是改变视图,并以更易于访问的方式准备逻辑。

例如,如果您需要第xx-th 项,则在视图中执行以下映射:

def some_view(request):
    pair_names = []  # some data
    xx = 8
    data = [pair_name[xx] for pair_name in pair_names]
    context = {'pair_names': data}
    return render(request, 'some_template.html', context)

在视图中处理这个不仅更优雅,而且通常也更有效,因为模板引擎在遍历数据结构时通常效率较低。


推荐阅读