如何在 jinja2 中使用 django 中的动态变量(variable.variable.variable)

Posted

技术标签:

【中文标题】如何在 jinja2 中使用 django 中的动态变量(variable.variable.variable)【英文标题】:How to use dynamic variable (variable.variable.variable) in jinja2 with django 【发布时间】:2019-11-04 01:44:03 【问题描述】:

“我想在模板中显示名称而不是 ID。

我将 jinja2 和 django2.2.1 与 python3 一起使用。我想在我的模板中使用动态变量。我有一个 id 和 name 的字典,我想在我的模板视图中显示相关 ID 的名称。

    name_dict = 
    1 : 'name 1'
    2 : 'name 2'
    

return name_dict

“在我的模板中,我有另一个对象是table_data, 现在在我看来,我想做这样的事”

  table_data = object with another table data

    % for data in table_data %

#This does not gives any error but not printing name

        name_dict.data.id  

#It gives an error

        name_dict[data.id] 

    % endfor %

“我应该怎么做才能显示'name_dict'中的名字”

提前致谢

【问题讨论】:

你确定使用 Jinja2 而不是 Django 模板语言吗? 是的,这是我的 settings.py 'code' 'BACKEND': 'django.template.backends.jinja2.Jinja2', 'DIRS': [os.path.join(project_root, ' apps', 'admin', 'templates')], 'APP_DIRS': True, 'OPTIONS': 'environment': 'apps.admin.jinja2.environment', , , 'code' 然后显示你遇到了什么错误。这是 Jinja2 中的有效代码。 TemplateSyntaxError at /admin/key_mapping/list 'Could not parse the rest: '[data.id]' from 'name_dict[data.id]'' 嗯,正如我所说,这是一个 Django 模板语言错误。所以你没有使用 Jinja2。我不知道该设置在哪里,但它显然没有生效或被覆盖。 【参考方案1】:

您可以从您的views.py 内部将dict 键或值或两者发送到您的模板 像这样:

字典 = '第一' : 'aa', '第二' : 'bb',

定义我的视图(请求): 返回渲染(请求,'home.html',字典)

在 home.html 中,您可以像这样使用 dict 数据:(考虑作为 jinja 代码?) % 如果是第一个 % % for string in First % ...... 请记住,您可以发送一个列表来代替“aa”,例如

【讨论】:

以上是关于如何在 jinja2 中使用 django 中的动态变量(variable.variable.variable)的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Django 1.8 中使用 jinja2 作为模板引擎

在 Django 中使用 Jinja2 加载 css 文件

如何在脚本中使用 django-template 而不是 jinja2?

在 Django 中使用 Jinja2 MemcachedBytecodeCache

在 jinja2 中使用 django 过滤器

如何检查 jinja2/django 模板中任何变量的大小写?