Maison >développement back-end >Tutoriel Python >Le framework Tornado de Python est configuré pour utiliser le moteur de modèles Jinja2

Le framework Tornado de Python est configuré pour utiliser le moteur de modèles Jinja2

高洛峰
高洛峰original
2017-03-01 13:41:372046parcourir

Jinja2 est le moteur de modèles intégré au framework Web populaire Flask, et il est similaire au moteur de modèles de Django. Nous verrons ici comment configurer le moteur de modèles Jinja2 pour le framework Tornado de Python

tornado default Il existe un moteur de modèles mais la fonction est simple (en fait, tout ce que je peux utiliser est similaire) et il est assez difficile à utiliser. La syntaxe de jinja2 est similaire à celle des modèles Django, j'ai donc décidé de l'utiliser. 🎜>

Téléchargez jinja2

Ou utilisez pip pour télécharger (c'est vraiment amusant à utiliser)

pip install jinja2

De cette façon, vous pouvez l'utiliser.

Intégration de tornado et jinja2

Il est très simple d'intégrer tornado et jinja2 (en fait, il est relativement simple de trouvez-le en ligne). Je ne sais pas où je l'ai trouvé, mais je l'ai trouvé. Je n'entrerai pas dans les détails et je vais juste voir le code

#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)
De cette façon, vous pouvez remplacer self.render par self.render_html dans tornado.

Plus de configuration du framework Tornado de Python utilise le modèle Jinja2 Pour les articles liés au moteur, veuillez faire attention au site Web chinois de PHP !

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn