Django 中的模板变量

时间:2021-02-13 19:28:12

标签: django django-views django-templates

我正在尝试使用模板变量来访问模板字典 当我做 {{ pair_name.8 }} 时它会起作用

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

2 个答案:

答案 0 :(得分:0)

<块引用>

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

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

您可以实现 custom template filter 来执行下标查找,或使用 Jinja template engine。但可能更优雅的方法是更改​​视图,并以更易于访问的方式准备逻辑。

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

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)

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

答案 1 :(得分:0)

@Peace Bytheway - 只需我的 2 美分 - 模板应该尽可能愚蠢,这意味着尽量避免从模板到视图中的繁重逻辑。理想情况下,您还应该保持视图轻量级。没有太多的处理。视图背后的概念是简单地委托。因此,将职责划分到正确的层是非常关键的。