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

高洛峰
發布: 2017-03-01 13:41:37
原創
1850 人瀏覽過

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的Tornado框架配置使用Jinja2模板引擎相關文章請關注PHP中文網!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!