概述
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,**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模板引擎的方法全部内容,希望文章能够帮你解决为Python的Tornado框架配置使用Jinja2模板引擎的方法所遇到的程序开发问题。
如果您也喜欢它,动动您的小指点个赞吧