为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编程中对文件和存储器的读写示例
Jan 25 Python
python 中random模块的常用方法总结
Jul 08 Python
详解Python在七牛云平台的应用(一)
Dec 05 Python
Python中__slots__属性介绍与基本使用方法
Sep 05 Python
python使用BeautifulSoup与正则表达式爬取时光网不同地区top100电影并对比
Apr 15 Python
python tkinter实现界面切换的示例代码
Jun 14 Python
使用IDLE的Python shell窗口实例详解
Nov 19 Python
pytorch 指定gpu训练与多gpu并行训练示例
Dec 31 Python
appium+python adb常用命令分享
Mar 06 Python
Python基于gevent实现高并发代码实例
May 15 Python
详解python tkinter 图片插入问题
Sep 03 Python
Python基础知识之变量的详解
Apr 14 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 Global定义全局变量使用说明
2013/08/15 PHP
yum命令安装php7和相关扩展
2016/07/04 PHP
JQuery 学习笔记 选择器之一
2009/07/23 Javascript
javaScript 删除字符串空格多种方法小结
2012/10/24 Javascript
js设置function参数默认值(适合没有传参情况)
2014/02/24 Javascript
javascript实现网页背景烟花效果的方法
2015/08/06 Javascript
使用jquery+CSS3实现仿windows10开始菜单的下拉导航菜单特效
2015/09/24 Javascript
JS模拟bootstrap下拉菜单效果实例
2016/06/17 Javascript
JS小数转换为整数的方法分析
2017/01/07 Javascript
jQuery读取XML文件的方法示例
2017/02/03 Javascript
Vue 进入/离开动画效果
2017/12/26 Javascript
浅析Vue中method与computed的区别
2018/03/06 Javascript
AngularJS使用Filter自定义过滤器控制ng-repeat去除重复功能示例
2018/04/21 Javascript
Bootstrap导航菜单点击后无法自动添加active的处理方法
2018/08/10 Javascript
微信小程序按钮去除边框线分享页面功能
2018/08/27 Javascript
vue使用v-if v-show页面闪烁,div闪现的解决方法
2018/10/12 Javascript
element ui分页多选,翻页记忆的实例
2019/09/03 Javascript
vue的滚动条插件实现代码
2019/09/07 Javascript
Python中使用Inotify监控文件实例
2015/02/14 Python
在Heroku云平台上部署Python的Django框架的教程
2015/04/20 Python
python操作mysql代码总结
2018/06/01 Python
python实现淘宝秒杀脚本
2020/06/23 Python
Python初学者常见错误详解
2019/07/02 Python
python实现滑雪者小游戏
2020/02/22 Python
宝塔面板出现“open_basedir restriction in effect. ”的解决方法
2021/03/14 PHP
Shopee印度尼西亚:东南亚与台湾市场最大电商平台
2018/06/17 全球购物
超级英雄、电影和电视、乐队和音乐T恤:Loud Clothing
2019/09/01 全球购物
橄榄树药房:OLIVEDA
2019/09/01 全球购物
在线实验室测试:HealthLabs.com
2020/05/03 全球购物
俄罗斯首家面向中国消费者的一站式购物网站:Wruru
2020/05/08 全球购物
如何设定的weblogic的热启动模式(开发模式)与产品发布模式
2012/09/08 面试题
库房主管岗位职责
2013/12/31 职场文书
优秀毕业生自我鉴定
2014/01/19 职场文书
安全生产大检查方案
2014/05/07 职场文书
班训口号大全
2014/06/18 职场文书
台式电脑蓝牙适配器怎么安装?台式电脑蓝牙适配器安装教程
2022/04/08 数码科技