python的tornado框架配置使用jinja2模板引擎

jinja2是人气web框架flask中的内置模板引擎,而且与django的模板引擎比较类似,这里我们就来看一下为python的tornado框架配置使用jinja2模板引擎的方法

tornado 默认有一个模板引擎但是功能简单(其实我能用到的都差不多)使用起来颇为麻烦, 而jinja2语法与django模板相似所以决定使用他.

下载jinja2

还是用pip 下载(用的真是爽)

pip install jinja2

这样就可以使用了.

tornado与jinja2 整合

tornado和jinja2整合起来很简单(其实是网上找的比较简单), 不知道从那里找到的反正找到了,不说了直接上代码

#coding:utf-8
import tornado.web
from jinja2 import environment, filesystemloader, templatenotfound
class templaterendring(object):
“””
a simple class to hold methods for rendering templates.
“””
def render_template(self, template_name, **kwargs):
template_dirs = []
if self.settings.get(‘template_path’, ”):
template_dirs.append(self.settings[‘template_path’])
env = environment(loader=filesystemloader(template_dirs))
try:
template = env.get_template(template_name)
except templatenotfound:
raise templatenotfound(template_name)
content = template.render(kwargs)
return content
# 就是重新写 basehandler 由jinja2模板渲染
class basehandler(tornado.web.requesthandler, templaterendering):
“””
tornado requesthandler subclass.
“””
def initialize(self):
pass
def get_current_user(self):
user = self.get_secure_cookie(‘user’)
return user if user else none
def render_html(self, template_name, **kwargs):
kwargs.update({
‘settings’: self.settings,
‘static_url’: self.settings.get(‘static_url_prefix’, ‘/static/’),
‘request’: self.request,
‘current_user’: self.current_user,
‘xsrf_token’: self.xsrf_token,
‘xsrf_form_html’: self.xsrf_form_html,
})
content = self.render_template(template_name, **kwargs)
self.write(content)

这样就可以在tornado中替换self.render为self.render_html了.

更多python的tornado框架配置使用jinja2模板引擎相关文章请关注php中文网!

Posted in 未分类

发表评论