为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了.