你在哪里存储变量在jinja?

时间:2011-01-12 01:17:47

标签: python templates jinja2

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

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

2 个答案:

答案 0 :(得分: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)

请注意传递给render_template

的模板变量(也称为 context

Jinja很漂亮good documentation。请阅读。随意提出进一步的问题。

答案 1 :(得分:1)

编辑:我已经用Google搜索了搜索答案,我发现了一些可以提供帮助的文章(非常肯定他们帮助了我)

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

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

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