为Python的Tornado框架配置使用Jinja2模板引擎的方法

Julia ·
更新时间:2024-09-21
· 645 次阅读

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+jinja2实现接口数据批量生成工具Python的Flask框架标配模板引擎Jinja2的使用教程Python的Flask框架中的Jinja2模板引擎学习教程Python使用pyh生成HTML文档的方法示例python解析html提取数据,并生成word文档实例解析python使用 HTMLTestRunner.py生成测试报告Python3实现抓取javascript动态生成的html网页功能示例在Python中使用CasperJS获取JS渲染生成的HTML内容的教程python 利用jinja2模板生成html代码实例



模板 jinja2 方法 tornado Python

需要 登录 后方可回复, 如果你还没有账号请 注册新账号