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


Posted in Python onJune 30, 2016

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 相关文章推荐
python list使用示例 list中找连续的数字
Jan 27 Python
Windows系统下安装Python的SSH模块教程
Feb 05 Python
详解Python中for循环的使用方法
May 14 Python
python 循环while和for in简单实例
Aug 16 Python
在cmd命令行里进入和退出Python程序的方法
May 12 Python
python利用Tesseract识别验证码的方法示例
Jan 21 Python
python tkinter canvas 显示图片的示例
Jun 13 Python
Python for循环及基础用法详解
Nov 08 Python
Python上下文管理器全实例详解
Nov 12 Python
Python项目打包成二进制的方法
Dec 30 Python
Python图片处理之图片裁剪教程
May 27 Python
对象析构函数__del__在Python中何时使用
Mar 22 Python
Python的Flask框架中的Jinja2模板引擎学习教程
Jun 30 #Python
Python的Tornado框架实现异步非阻塞访问数据库的示例
Jun 30 #Python
Python的Tornado框架实现图片上传及图片大小修改功能
Jun 30 #Python
举例讲解Python中metaclass元类的创建与使用
Jun 30 #Python
在Python中定义和使用抽象类的方法
Jun 30 #Python
Python中functools模块的常用函数解析
Jun 30 #Python
深入浅析Python中join 和 split详解(推荐)
Jun 30 #Python
You might like
PHP的AES加密算法完整实例
2016/07/20 PHP
PHP实时统计中文字数和区别
2019/02/28 PHP
javascript 常用代码技巧大收集
2009/02/25 Javascript
JQuery中SetTimeOut传参问题探讨
2013/05/10 Javascript
JS图像无缝滚动脚本非常好用
2014/02/10 Javascript
NodeJS Web应用监听sock文件实例
2015/02/18 NodeJs
javascript实现通过表格绘制颜色填充矩形的方法
2015/04/21 Javascript
JavaScript和JQuery的鼠标mouse事件冒泡处理
2015/06/19 Javascript
JavaScript中Date对象的常用方法示例
2015/10/24 Javascript
JS鼠标拖拽实例分析
2015/11/23 Javascript
谈谈第三方App接入微信登录 解读
2016/12/27 Javascript
javascript验证香港身份证的格式或真实性
2017/02/07 Javascript
js学使用setTimeout实现轮循动画
2017/07/17 Javascript
在微信小程序里使用watch和computed的方法
2018/08/02 Javascript
如何使用50行javaScript代码实现简单版的call,apply,bind
2019/08/14 Javascript
Nodejs中使用puppeteer控制浏览器中视频播放功能
2019/08/26 NodeJs
Angular8路由守卫原理和使用方法
2019/08/29 Javascript
js HTML DOM EventListener功能与用法实例分析
2020/04/27 Javascript
React实现评论的添加和删除
2020/10/20 Javascript
vue created钩子函数与mounted钩子函数的用法区别
2020/11/05 Javascript
JavaScript的一些小技巧分享
2021/01/06 Javascript
python MNIST手写识别数据调用API的方法
2018/08/08 Python
详解Python字符串切片
2019/05/20 Python
python实现对服务器脚本敏感信息的加密解密功能
2019/08/13 Python
python3使用GUI统计代码量
2019/09/18 Python
基于python3.7利用Motor来异步读写Mongodb提高效率(推荐)
2020/04/29 Python
Python3爬虫中关于中文分词的详解
2020/07/29 Python
python破解同事的压缩包密码
2020/10/14 Python
Python爬虫之Selenium警告框(弹窗)处理
2020/12/04 Python
python解包用法详解
2021/02/17 Python
html5拖曳操作 HTML5实现网页元素的拖放操作
2013/01/02 HTML / CSS
New Balance法国官方网站:购买鞋子和服装
2019/09/01 全球购物
年会主持词结束语
2014/03/27 职场文书
信用社竞聘演讲稿
2014/05/16 职场文书
初一英语教学反思
2016/02/15 职场文书
Opencv中cv2.floodFill算法的使用
2021/06/18 Python