我有五个具有相同页面布局和结构但颜色、文本等方面不同的页面,所以这是模板化的理想环境。我决定使用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'))
这将在Python路径中已安装的yourapplication
Python包的templates
文件夹内寻找模板。您也可以使用其他加载器从特定文件系统或其他位置加载。
然后,您可以加载一个模板:
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
的模板变量(也称为上下文)。
Jinja有非常好的文档。请阅读它。如有进一步问题,请随时提出。
编辑:我在互联网上搜索答案,找到了一些可能有用的文章(相信它们对我有帮助)
http://dbanck.de/2009/01/13/using-jinja2-with-django/
http://www.hindsightlabs.com/blog/2010/03/15/jinja2-and-django-4ever/(失效)
@app.route
如何定义URL。 - 9000