>  기사  >  백엔드 개발  >  Python의 Tornado 프레임워크는 Jinja2 템플릿 엔진을 사용하도록 구성되었습니다.

Python의 Tornado 프레임워크는 Jinja2 템플릿 엔진을 사용하도록 구성되었습니다.

高洛峰
高洛峰원래의
2017-03-01 13:41:371988검색

Jinja2는 널리 사용되는 웹 프레임워크인 Flask에 내장된 템플릿 엔진으로, Django의 템플릿 엔진과 유사합니다. 여기서는 Python의 Tornado 프레임워크용 Jinja2 템플릿 엔진을 구성하는 방법을 살펴보겠습니다

tornado default 템플릿 엔진이 있지만 기능은 간단하고(사실 제가 쓸 수 있는 건 다 비슷해요) 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)

이렇게요. , 토네이도에서 self.render를 self.render_html로 바꿀 수 있습니다.

Jinja2 템플릿 엔진을 사용하는 Python의 Tornado 프레임워크 구성에 대한 더 많은 관련 기사를 보려면 PHP 중국어 웹사이트를 팔로우하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.