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 jinja2Ou 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 jinja2Il 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)