我有五个页面具有相同的页面布局和结构,但有一些不同的颜色、文本等,所以这是一个理想的模板环境。我决定使用 Jinja2 和可能的烧瓶。我已经阅读了文档和一些在线教程,其中解释了很多关于你可以在页面上使用模板做什么,但没有太多关于如何将变量发送到页面。
- 您将特定于页面的变量存储在哪里?
- 代码如何知道请求了哪个页面以及要加载哪些变量?
以下是基本用法:
首先创建一个模板
>>> 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 有很好的文档。请阅读。随时问更多问题。
编辑:我在互联网上搜索了答案,我发现了一些可以帮助的文章(很确定他们帮助了我)
http://dbankk.de/2009/01/13/using-jinja2-with-django/
http://www.hindsightlabs.com/blog/2010/03/15/jinja2-and-django-4ever/ (dead)