Flask を触ってみる

Python の Web アプリケーション・フレームワークのひとつ、Flask を触ってみました。 Hello World を表示させるサンプルと、Jinja2 テンプレートをつかった HTML 生成を少しやってみます。

ほとんどサンプルコードそのままなので誰かの参考になるようなものではないのですが、自分の備忘のためという意味もこめて。

from flask import Flask
from flask import render_template


app = Flask(__name__)

@app.route('/')
def hello_world():
    return "Hello World!!"


@app.route('/user/<username>')
def show_user_name(username=''):
    # return "user: " + username
    return render_template('hello.html', name=username)


def main():
    app.debug = True
    app.run()


if __name__ == '__main__':
    main()

こういう感じで例えば hello.py という名前で保存したとすると、ターミナルから実行すると http://localhost:5000/ で動きます。 テンプレートは hello.py が あるディレクトリに templates というディレクトリを作ってそのなかに html ファイルとして置いておきます。今回のサンプルでは hello.html という名前にしています。

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="utf-8">
    <title>Hello from Flask</title>
    <script></script>
</head>
<body>
    {% if name %}
    <h1>Hello {{ name }}!</h1>
    {% else %}
    <h1>Hello World!</h1>
    {% endif %}
</body>
</html>

http://localhost:5000/hoge などにアクセスすると <h1> タグで囲まれた Hello hoge! という文字列が表示されます。 どの URL にアクセスがあったらどういう処理を返すかというのを @app.route('') というデコレータをつけた関数で書いていく感じですね。ちょっとしたブラウザからアクセスするツールを作ったりするのに便利そうです。