Python

Python Bottleのソースを読む テンプレート編

投稿日:2016年12月5日 更新日:


前回に続きPythonの軽量WebフレームワークBottleのソースを読む テンプレート編
 

Class Hierarchy

ここの部分

20160206230621
 

Bottleのテンプレートについて

Bottleのテンプレートは、Simple、Cheetah、Jinja2、Makoの4種類があり、BaseTemplateを継承している

Pythonのテンプレートの種類(参考)
http://www.cmscom.jp/blog/af0ga8

テンプレートの使い方

テンプレートの拡張子には以下が利用できる

例えばjinja2を使う場合は以下のように呼び出すことができる(jinja2をpip installする必要あり)

view

テンプレート呼び出しの処理をみてみる

各テンプレートは以下のように設定されている。 functools.partialにfunc templateが渡されている

jinja2_templateが呼ばれた時の処理

*argsにはjinja2が、**kwargsにはtemplate_adapter=Jinja2Templateが渡される

引数からjinja2テンプレート名を取得

Jinja2Templateを取得

テンプレートパスをlookup(パスは./views/か./)

Jinja2Templateをインスタンス化

BaseTemplateのコンストラクタの最後のprepareでJinja2Templateのprepareが呼ばれる

ここではじめてjinja2がimportされる

テンプレートのrenderメソッドにてレンダリングしviewを返す

BottleのテンプレートはBaseTemplateを継承しprepareとrenderを実装することで使える仕組みになっている


-Python

執筆者:

関連記事

FlaskをBottleと比較した雑感

以前Bottleのソースをチェックしてみた流れでFlaskも見てみた。結論から言うとBottleと大して変わらん。もちろんFlaskのほうがコード量が多く多少リッチではあるもののざっくり機能ベースで言 …

Python Bottleのソースを読む 起動編

Pythonの軽量WebフレームワークBottleのソースを読む 起動編 Bottleとは Bottle is a fast, simple and lightweight WSGI micro we …

Python Bottleのソースを読む ユニットテスト編

Python Bottleのソースを読む テスト編 前回までで一通りメインの機能は確認できました。ではいよいよコード追加してプルリクを投げましょうというところですが、テストは?ということでユニットテス …

Python Bottleのソースを読む リクエスト・レスポンス編

Pythonの軽量WebフレームワークBottleのソースを読む リクエスト・レスポンス編   Class Hierarchy ここの部分 リクエスト受付からレスポンスまで 前回、サーバの立ち上げ時に …

Python Bottleのソースを読む プラグイン編

Pythonの軽量WebフレームワークBottleのソースを読む プラグイン編 Bottleを触ってみると通常のWebフレームワークには用意されているであろう機能がなかったりします。これはマイクロフレ …