Jinja2 中的上下文是啥?
Posted
技术标签:
【中文标题】Jinja2 中的上下文是啥?【英文标题】:What is context in Jinja2?Jinja2 中的上下文是什么? 【发布时间】:2021-01-16 20:15:33 【问题描述】:jinja_code.py
import jinja2
env=jinja2.Environment(loader=FileSystemLoader(searchpath="./"))
template=env.get_template('file.j2')
render_template=template.render(test1="TEST1",test2="TEST2")
print(render_template)
文件.j2
context.test1
我正在学习 Jinja2,我知道上下文是传递给 Template 的变量,但是当我执行上面的代码时,我得到了以下错误
jinja2.exceptions.undefinederror: 'context' is not defined
我已阅读文档,但无法完全理解。您能否解释一下什么是上下文以及如何使用它来访问变量?
【问题讨论】:
在没有上下文的情况下尝试test1
是的,我知道这行得通。但是我看到了一个代码,用户只是写了 % set name = context.FirstName %。所以我很困惑这个上下文是从哪里加载的?
【参考方案1】:
上下文包含您在模板渲染时要注入的动态内容。
在您的示例中,文件 file.j2 必须具有以下内容:
test1
因为上下文不是一个变量,而是你传递给模板的所有变量的集合。 test1 和 test2 是上下文的一部分。
【讨论】:
但是我看到了一个代码,用户只写了 % set name = context.FirstName %。那你能解释一下如何处理吗? 如果你需要使用 context.test1 ,你需要通过以下方式将它作为一个dict传递给你的模板:render_template=template.render(context="test1": "TEST1","test2":"TEST2")以上是关于Jinja2 中的上下文是啥?的主要内容,如果未能解决你的问题,请参考以下文章