python - 你在哪里存储 jinja 中的变量?

标签 python templates jinja2

我有五个页面具有相同的页面布局和结构,但有些不同的颜色、文本等,所以这是一个理想的模板环境。我决定使用 Jinja2 和可能的 flask 。我已经阅读了文档和一些在线教程,其中解释了很多关于你可以在页面上使用模板做什么,但没有太多关于如何将变量发送到页面。

  • 您将特定于页面的变量存储在哪里?
  • 代码如何知道请求了哪个页面以及要加载哪些变量?

最佳答案

基本用法如下:

首先创建一个模板

>>> from jinja2 import Template
>>> template = Template('Hello {{ name }}!')

然后通过变量渲染它

>>> template.render(name='John Doe')
u'Hello John Doe!'

通常您会希望从文件而不是代码中加载模板。这更加高效和优化,并且允许模板继承:

from jinja2 import Environment, PackageLoader
env = Environment(loader=PackageLoader('yourapplication', 'templates'))

这将在 yourapplication Python 包的 templates 文件夹中查找模板,这些模板安装在 Python 路径中。您也可以使用其他加载器从特定文件系统或其他地方加载。

然后你可以加载一个模板:

template = env.get_template('mytemplate.html')
print template.render(the='variables', go='here')

使用 Flask 时,一切都已为您配置好了,因此您只需使用 Flask 的 render_template 函数,它就会查找您应用程序的 templates 子文件夹:

from flask import render_template

@app.route('/hello/')
def hello(name=None):
    return render_template('hello.html', name=name)

注意传递给 render_template

的模板变量(也称为 context)

Jinja 有漂亮的good documentation .请阅读。欢迎提出更多问题。

关于python - 你在哪里存储 jinja 中的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4664515/

相关文章:

python - 在具有 asyncio.coroutine 方法的类外部声明的 asyncio event_loop 失败并显示 "AttributeError: ' NoneType' 对象没有属性 'select'“

python - 修改 Pandas 数据框以列出年月日

python - 立即加载 django 自定义模板标签

c++ - 什么情况下new会两次返回同一个地址?

ansible - 使用 Jinja2 过滤器获取组中主机的 IP 列表

python - vps 上的 django - 重新启动服务器时获取 "model is already registered"

Python更改渐变以对角线开始

c++ - 带有 nullptr-function-ptr 参数的类模板

Ansible 循环遍历 jinja 模板的变量整数和增量值

python - 如何将 angular2 与 jinja2 模板和 flask 结合起来