19

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

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

2 回答 2

48

以下是基本用法:

首先创建一个模板

>>> 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'))

templates这将在 Python 包的文件夹中查找模板yourapplication,如安装在 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)

注意传递给的模板变量(也称为context )render_template

Jinja 有很好的文档。请阅读。随时问更多问题。

于 2011-01-12T01:21:36.733 回答
1

编辑:我在互联网上搜索了答案,我发现了一些可以帮助的文章(很确定他们帮助了我)

http://dbankk.de/2009/01/13/using-jinja2-with-django/

http://www.hindsightlabs.com/blog/2010/03/15/jinja2-and-django-4ever/ (dead)

http://djangosnippets.org/snippets/1061/

于 2012-02-21T09:23:56.107 回答