概要
Flask は Python のシンプルなウェブフレームワークです。Ruby では Sinatra がそれに近いのではないかと思います。
Flask は、jinja2 というテンプレートエンジンを使うのですが、それだと HTML を素で書くような感じになってしまいます。私は、HAML に慣れているので、Flask で HAML 風のビューテンプレートを書ける hamlish-jinjaを使ってみました。
準備
$ pip install Flask
$ pip install Hamlish-Jinja
ファイル構成
.
├── app.py
└── templates
└── index.haml
from flask import Flask, render_template
from werkzeug import ImmutableDict
class FlaskWithHamlish(Flask):
jinja_options = ImmutableDict(
extensions=['jinja2.ext.autoescape', 'jinja2.ext.with_', 'hamlish_jinja.HamlishExtension']
)
app = FlaskWithHamlish(__name__)
app.jinja_env.hamlish_mode = 'indented'
app.jinja_env.hamlish_enable_div_shortcut = True
@app.route('/')
def index():
return render_template('index.haml')
if __name__ == '__main__':
app.run()
%html
%head
%meta charset="utf-8"
%title
Hello World!
%body
%h1
Hello World!
#実行
$ python app.py
これでウェブブラウザ上で、localhost:5000
にアクセス。Hello World!
と表示されていると思います。
Flask では、テンプレートはデフォルトで templates
という名前のディレクトリに置くことになっているようです。
#本家HAMLとの違い
Hamlish は名前の通りあくまでも「HAML風」であって、HAMLそのものではありません。違いを知るのに、この記事が参考になりました。
上の例でも、HAML なら %meta{charset: "utf-8"}
となるべきところが、Hamlish だと %meta charset="utf-8"
となっています。
#オプション指定
app.jinja_env.hamlish_mode = 'indented'
app.jinja_env.hamlish_enable_div_shortcut = True
Hamlish へのオプションの指定です。オプションにどのようなものがあるかは、hamlish-jinja本家をのぞいてみてください。
#感想
Flask はとてもコンパクトで良いと思いました。加えて、Hamlish を使うことで、ウェブサイトを楽しくサクサク作れそうです。
#参考文献
ウェブアプリケーションフレームワーク Flask を使ってみる
たいへん勉強になりました。これを読むだけで小さなウェブサイトならすぐに作り始められそうです。
#追記
いつも忘れるので。
ビューファイルの変更がサーバー再起動なしで反映されるようにするには、
$ FLASK_DEBUG=1 python app.py
とする。