模板引擎的使用在web开发中是不可避免和必要的。hi.py框架使用jinja2作为模板引擎。
为了使用hi.py提供的jinja2引擎,首先需要引入它:
from hi import hi,template
然后就是使用它:
1 @app.route(r‘^/template/(?P<name>\w+)/(?P<age>\d+)/?$‘,[‘GET‘]) 2 def tpl(req,res,param): 3 param[‘title‘]=‘jinja2 测试‘ 4 tpl_engine = template(os.path.join(os.getcwd(),‘python/templates‘)) 5 res.content(tpl_engine.file_render(‘b.html‘,param)) 6 res.status(200)
创建template实例需要一个参数,它指定引擎搜索模板文件的目录,在上面的代码中就是hi-nginx安装目录下的python/templates文件夹。
然后准备数据,数据使用dict来收集,使用file_render方法通过指定模板文件和数据dict来输出字符串内容。
如果使用的不是模板文件,而是模板字符串,那就使用string_render方法,它的第一个参数指的是字符串模板。
在上面的例子中,模板文件b.html内容如下:
1 {% extends ‘a.html‘ %} 2 {% block body %} 3 {{ super() }} 4 继承 5 {{ name }} is {{ age }} years old. 6 {% endblock %}
其中使用了jinja2中的模板继承功能,见第一行。因此,还有个模板文件a.html:
<html> <head><title>{{ title }}</title></head> <body>{% block body %} <p>Hello:{{ name }},you are {{ age }} years old.</p> <p>加载器负责从诸如文件系统的资源加载模板</p> {% endblock %} </body> </html>
在本例中,中文内容已经出现。因此需要使用utf-8编码。hi-nginx已经全面支持python3,所以,尽情中文吧!