为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数组定义方法
Apr 13 Python
微信 用脚本查看是否被微信好友删除
Oct 28 Python
Python实现简单的获取图片爬虫功能示例
Jul 12 Python
python音频处理用到的操作的示例代码
Oct 27 Python
Python的numpy库中将矩阵转换为列表等函数的方法
Apr 04 Python
python中pip的安装与使用教程
Aug 10 Python
python 处理数字,把大于上限的数字置零实现方法
Jan 28 Python
python实现爬取百度图片的方法示例
Jul 06 Python
python文件排序的方法总结
Sep 13 Python
解决Ubuntu18中的pycharm不能调用tensorflow-gpu的问题
Sep 17 Python
Python编程编写完善的命令行工具
Sep 15 Python
Python图像处理库PIL详细使用说明
Apr 06 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
十大催泪虐心动漫电影,有几部你还没看
2020/03/04 日漫
解析PayPal支付接口的PHP开发方式
2010/11/28 PHP
利用PHP访问MySql数据库的逻辑操作以及增删改查的实例讲解
2017/08/30 PHP
PHP7内核之Reference详解
2019/03/14 PHP
laravel通过a标签从视图向控制器实现传值
2019/10/15 PHP
通过pjax实现无刷新翻页(兼容新版jquery)
2014/01/31 Javascript
jQuery验证元素是否为空的两种常用方法
2015/03/17 Javascript
js生成随机数的过程解析
2015/11/24 Javascript
2016年最热门的15 款代码语法高亮工具,美化你的代码
2016/01/06 Javascript
js发送短信倒计时的简单实现方法
2016/09/08 Javascript
深入学习Bootstrap表单
2016/12/13 Javascript
利用JS实现简单的日期选择插件
2017/01/23 Javascript
Vue中props的使用详解
2018/06/15 Javascript
layui table动态表头 改变表格头部 重新加载表格的方法
2019/09/21 Javascript
element-ui 文件上传修改文件名的方法示例
2019/11/05 Javascript
vue 扩展现有组件的操作
2020/08/14 Javascript
vue实现表格合并功能
2020/12/01 Vue.js
Python模拟登录验证码(代码简单)
2016/02/06 Python
python通过tcp发送xml报文的方法
2018/12/28 Python
深入了解Python在HDA中的应用
2019/09/05 Python
selenium WebDriverWait类等待机制的实现
2020/03/18 Python
django教程如何自学
2020/07/31 Python
mac系统下安装pycharm、永久激活、中文汉化详细教程
2020/11/24 Python
python通用数据库操作工具 pydbclib的使用简介
2020/12/21 Python
python 基于PYMYSQL使用MYSQL数据库
2020/12/24 Python
俄罗斯女装店:12storeez
2019/10/25 全球购物
放飞梦想演讲稿
2014/05/05 职场文书
建设投标担保书
2014/05/13 职场文书
合作协议书格式
2014/08/19 职场文书
2015年酒店服务员工作总结
2015/05/18 职场文书
小学毕业感言100字
2015/07/30 职场文书
《揠苗助长》教学反思
2016/02/20 职场文书
《中彩那天》教学反思
2016/02/24 职场文书
Python编写nmap扫描工具
2021/07/21 Python
Python Flask搭建yolov3目标检测系统详解流程
2021/11/07 Python
HTML页面点击按钮关闭页面的多种方式
2022/12/24 HTML / CSS