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)