LoginSignup
2
3

More than 5 years have passed since last update.

Flask + Hamlish で Hello World

Last updated at Posted at 2017-04-08

概要

Flask は Python のシンプルなウェブフレームワークです。Ruby では Sinatra がそれに近いのではないかと思います。

Flask は、jinja2 というテンプレートエンジンを使うのですが、それだと HTML を素で書くような感じになってしまいます。私は、HAML に慣れているので、Flask で HAML 風のビューテンプレートを書ける hamlish-jinjaを使ってみました。

準備

$ pip install Flask
$ pip install Hamlish-Jinja

ファイル構成

.
├── app.py
└── templates
    └── index.haml
app.py
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()
index.haml
%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

とする。

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3