为Python的Tornado框架配置使用Jinja2模板引擎的方法
tornado默认有一个模板引擎但是功能简单(其实我能用到的都差不多)使用起来颇为麻烦,而jinja2语法与django模板相似所以决定使用他.
下载jinja2
还是用pip下载(用的真是爽)
pipinstalljinja2
这样就可以使用了.
tornado与jinja2整合
tornado和jinja2整合起来很简单(其实是网上找的比较简单),不知道从那里找到的反正找到了,不说了直接上代码
#coding:utf-8
importtornado.web
fromjinja2importEnvironment,FileSystemLoader,TemplateNotFound
classTemplateRendring(object):
"""
Asimpleclasstoholdmethodsforrenderingtemplates.
"""
defrender_template(self,template_name,**kwargs):
template_dirs=[]
ifself.settings.get('template_path',''):
template_dirs.append(self.settings['template_path'])
env=Environment(loader=FileSystemLoader(template_dirs))
try:
template=env.get_template(template_name)
exceptTemplateNotFound:
raiseTemplateNotFound(template_name)
content=template.render(kwargs)
returncontent
#就是重新写BaseHandler由jinja2模板渲染
classBaseHandler(tornado.web.RequestHandler,TemplateRendering):
"""
TornadoRequestHandlersubclass.
"""
definitialize(self):
pass
defget_current_user(self):
user=self.get_secure_cookie('user')
returnuserifuserelseNone
defrender_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了.