您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

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

5b51 2022/1/14 8:19:00 python 字数 3018 阅读 381 来源 www.jb51.cc/python

tornado默认有一个模板引擎但是功能简单(其实我能用到的都差不多)使用起来颇为麻烦,而jinja2语法与django模板相似所以决定使用他.

概述

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,**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的Tornado框架配置使用Jinja2模板引擎的方法全部内容,希望文章能够帮你解决为Python的Tornado框架配置使用Jinja2模板引擎的方法所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶