为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 相关文章推荐
pycharm 使用心得(七)一些实用功能介绍
Jun 06 Python
深入剖析Python的爬虫框架Scrapy的结构与运作流程
Jan 20 Python
Python 加密的实例详解
Oct 09 Python
python绘制圆柱体的方法
Jul 02 Python
Python使用try except处理程序异常的三种常用方法分析
Sep 05 Python
Python DataFrame.groupby()聚合函数,分组级运算
Sep 18 Python
python学习之hook钩子的原理和使用
Oct 25 Python
对Python中的条件判断、循环以及循环的终止方法详解
Feb 08 Python
python os模块简单应用示例
May 23 Python
python3+opencv 使用灰度直方图来判断图片的亮暗操作
Jun 02 Python
Python如何自动获取目标网站最新通知
Jun 18 Python
Python如何把字典写入到CSV文件的方法示例
Aug 23 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中extract()函数的妙用分析
2012/07/11 PHP
关于php中的json_encode()和json_decode()函数的一些说明
2016/11/20 PHP
取得窗口大小 兼容所有浏览器的js代码
2011/08/09 Javascript
javascript中apply和call方法的作用及区别说明
2014/02/14 Javascript
JavaScript设计模式之代理模式介绍
2014/12/28 Javascript
iframe中子父类窗口调用JS的方法及注意事项
2015/08/25 Javascript
浅析JavaScript 调试方法和技巧
2015/10/22 Javascript
简单解析JavaScript中的__proto__属性
2016/05/10 Javascript
Node.js中npm常用命令大全
2016/06/09 Javascript
js提示框替代系统alert,自动关闭alert对话框的实现方法
2016/11/07 Javascript
基于Bootstrap和jQuery构建前端分页工具实例代码
2016/11/23 Javascript
input输入框内容实时监测(附代码)
2017/08/15 Javascript
使用Vue动态生成form表单的实例代码
2018/04/26 Javascript
详解vue在项目中使用百度地图
2019/03/26 Javascript
关于AOP在JS中的实现与应用详解
2019/05/06 Javascript
Vue 无限滚动加载指令实现方法
2019/05/28 Javascript
vue 组件中使用 transition 和 transition-group实现过渡动画
2019/07/09 Javascript
Javascript文本框脚本实现方法解析
2020/10/30 Javascript
[02:53]DOTA2英雄昆卡基础教程
2013/11/25 DOTA
使用wxPython获取系统剪贴板中的数据的教程
2015/05/06 Python
基于Python的PIL库学习详解
2019/05/10 Python
Python数据可视化处理库PyEcharts柱状图,饼图,线性图,词云图常用实例详解
2020/02/10 Python
pytorch中使用cuda扩展的实现示例
2020/02/12 Python
Python爬取网页信息的示例
2020/09/24 Python
植村秀美国官网:Shu Uemura美国
2019/03/19 全球购物
西班牙香水和化妆品连锁店:Druni
2019/05/05 全球购物
大学第二课堂活动总结
2014/07/08 职场文书
实习生工作证明范本
2014/09/14 职场文书
个人批评与自我批评
2014/10/15 职场文书
党员反对四风思想汇报范文
2014/10/25 职场文书
2015年幼儿园中班工作总结
2015/04/25 职场文书
毕业论文答辩开场白
2015/05/27 职场文书
七年级之开学家长寄语35句
2019/09/05 职场文书
vue实现移动端div拖动效果
2022/03/03 Vue.js
阿里云日志过滤器配置日志服务
2022/04/09 Servers
Sql Server 行数据的某列值想作为字段列显示的方法
2022/04/20 SQL Server