2015/09/23

[Python][Google App Engine][Jinja2]Templateの継承を行う

pythonのjinja2を使ってかつ環境がgoogle app engineの場合、Template Inheritanceつまりtemplateの継承はできるのだろうか?

試した結果できるみたい。

まずは、python側のコードを以下のようにする。

import webapp2
import os
import jinja2

JINJA_ENVIRONMENT = jinja2.Environment(
    loader=jinja2.FileSystemLoader(os.path.dirname(__file__)),
    extensions=['jinja2.ext.autoescape'],
    autoescape=True
)

#------------------------------------------------------------
#Top Index
#------------------------------------------------------------
class TopHandler(webapp2.RequestHandler):
  def get(self):
    self.response.headers['Content-Type'] = 'text/html; charset=UTF-8'
    template_values = {}
    template = JINJA_ENVIRONMENT.get_template('hoge.html')
    self.response.write(template.render(template_values))
で、html側を二つ用意する。
{% extends "base.html" %}
{% block hoge %}<p>hello world</p>{% endblock %}
で、基点となるhtmlを下のように用意する。
{% block hoge %}{% endblock %}
そうすると、block hogeの部分にコードが置換される。

これめっちゃ便利ー。

0 コメント:

コメントを投稿