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

 更新时间:2016年06月30日 18:21:14   作者:cangmean  
Jinja2是人气Web框架Flask中的内置模板引擎,而且与Django的模板引擎比较类似,这里我们就来看一下为Python的Tornado框架配置使用Jinja2模板引擎的方法

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中发布Web应用的常见方法与对比

    Python中发布Web应用的常见方法与对比

    这篇文章主要为大家详细介绍了Python中发布 Web 应用的几种常见方法的实现详细步骤以及它们的部署方法对比,有需要的小伙伴可以参考下
    2025-02-02
  • Python实现的线性回归算法示例【附csv文件下载】

    Python实现的线性回归算法示例【附csv文件下载】

    这篇文章主要介绍了Python实现的线性回归算法,涉及Python使用最小二乘法、梯度下降算法实现线性回归相关算法操作与使用技巧,需要的朋友可以参考下
    2018-12-12
  • python使用原始套接字发送二层包(链路层帧)的方法

    python使用原始套接字发送二层包(链路层帧)的方法

    今天小编就为大家分享一篇python使用原始套接字发送二层包(链路层帧)的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • Python中文分词实现方法(安装pymmseg)

    Python中文分词实现方法(安装pymmseg)

    这篇文章主要介绍了Python中文分词实现方法,通过安装pymmseg来实现分词功能,涉及pymmseg的下载、解压、安装及使用技巧,需要的朋友可以参考下
    2016-06-06
  • 解决python web项目意外关闭,但占用端口的问题

    解决python web项目意外关闭,但占用端口的问题

    今天小编就为大家分享一篇解决python web项目意外关闭,但占用端口的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • Python的@装饰器的作用小结

    Python的@装饰器的作用小结

    本文给大家讲解Python的@装饰器的用途,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2021-11-11
  • Python实现图像处理ORB算法

    Python实现图像处理ORB算法

    ORB(Oriented FAST and Rotated BRIEF)算法是一种高效的特征检测和描述符,它在图像匹配中有广泛的应用,下面我们就来了解一下ORB算法的原理与实现吧
    2023-12-12
  • 基于Python实现电影售票系统

    基于Python实现电影售票系统

    这篇文章主要介绍了通过Python实现一个简单的电影售票系统,文中的示例代码对我们学习Python有一定的帮助,感兴趣的小伙伴可以跟随小编一起学习一下
    2021-12-12
  • Python中的十大图像处理工具(小结)

    Python中的十大图像处理工具(小结)

    这篇文章主要介绍了Python中的十大图像处理工具,本文主要介绍了一些简单易懂最常用的Python图像处理库,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-06-06
  • django2.2安装错误最全的解决方案(小结)

    django2.2安装错误最全的解决方案(小结)

    这篇文章主要介绍了django2.2安装错误最全的解决方案(小结),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09

最新评论