python - Jinja2动态变量构建

标签 python jinja2

我的 jinja 模板得到一个对象,它有很多变量名,这个属性各不相同,所以它们的名字不同,我正在寻找一种基于前缀和 for 循环访问这个属性的方法:

{% for i in Object.vars %}
    <h1> {{ Object.attribute_ + i }} </h1>
{% endfor %}

我正在尝试访问 Object.attribute_1、Object.attribute_2 等。上面的代码当然行不通,但我想不出这样做的方法。

最佳答案

请记住,在您的模板文件中执行过多逻辑会导致(长期)维护您的代码的问题。

我想说的是,将您的逻辑保留在模板之外,并在渲染模板之前创建一个对象列表,使用 getattr()功能:

for i in Object.vars:
    list_of_objects.append(getattr(Object, 'attribute_' + i))

现在渲染模板时将列表传递给这样的:

render_template('page.html', list_of_objects=list_of_objects)

关于python - Jinja2动态变量构建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27004708/

相关文章:

python - Jinja loop.index 不打印

python-3.x - Jinja 找不到模板路径

使用字符串包含测试的 Jinja2 过滤器列表

jquery - 如何在JQuery中设置flask url_for

python - 将 JSON 元素分离到 pandas 数据帧的列中

Python - 匹配

python - pymongo 中的快速或批量更新

python - 使用 keras 但出现错误 AttributeError : 'Tensor' object has no attribute '_keras_history'

python - 如何解决查询对象错误 - ValueError : Cannot query "mayur": Must be "User" instance

python - 如何将 jinja2 输出渲染到 Python 中的文件而不是浏览器