今さらPython3 (64) - Flask
第9章続行中。
- 作者: Bill Lubanovic,斎藤康毅,長尾高弘
- 出版社/メーカー: オライリージャパン
- 発売日: 2015/12/01
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
Flask
Bottleよりももう少し気が利いているというFlaskを試す。まずはインストール。
$ pip3 install flask Collecting flask Downloading Flask-0.10.1.tar.gz (544kB) 100% |████████████████████████████████| 544kB 853kB/s Collecting Werkzeug>=0.7 (from flask) Downloading Werkzeug-0.11.3-py2.py3-none-any.whl (305kB) 100% |████████████████████████████████| 307kB 1.4MB/s Collecting Jinja2>=2.4 (from flask) Downloading Jinja2-2.8-py2.py3-none-any.whl (263kB) 100% |████████████████████████████████| 266kB 2.6MB/s Collecting itsdangerous>=0.21 (from flask) Downloading itsdangerous-0.24.tar.gz (46kB) 100% |████████████████████████████████| 49kB 7.3MB/s Collecting MarkupSafe (from Jinja2>=2.4->flask) Downloading MarkupSafe-0.23.tar.gz Installing collected packages: Werkzeug, MarkupSafe, Jinja2, itsdangerous, flask Running setup.py install for MarkupSafe Running setup.py install for itsdangerous Running setup.py install for flask Successfully installed Jinja2-2.8 MarkupSafe-0.23 Werkzeug-0.11.3 flask-0.10.1 itsdangerous-0.24
flask1.pyというファイルを作り、
サーバーを実行する。
$ python3 flask1.py
http://localhost:9999/にアクセスする。さっき作ったindex.htmlが表示される。
http://localhost:9999/echo/Mothraにアクセス。ソースを見る限り、入れた名前がそのまま表示されるはず。
エラーになると、こんな感じでダンプを吐くんですね。
flask + jinja2
ここからは、テンプレートシステムjinja2とflaskの併用を試す。
$ mkdir templates
サブディレクトリtemplateを作る。そのtemplateの下にflask2.htmlを作ってから、
flask2.pyを作成して、サーバーを実行。
$ python3 flask2.py
http://localhost:9999/Mothraにアクセス。
flask2.htmlの{{ thing }}というところに名前がインサートされて表示された。
さらに、テンプレートを書き換える。flask3.htmlをtemplateの下に作成する。もう1つ{{ place }}という何かが追加されてますね。
flask3a.pyのロジックを見ると、/echo/の後ろにthingとplaceをそれぞれ/に続けてというのがURLのルールになる訳だね。http://localhost:9999/Rodan/McKeesportにアクセスすると、こんな画面になる。
パラメータ渡しの方法として、上のヤツだとあんまり「それっぽい感」がないよね。ということで、もう少しいじったのが下のコード(flask3b.py)になる訳ですね。
http://localhost:9999/echo?thing=Gorgo&place=Wilmerdingにアクセスするとさっきと同じ結果が得られますと。よくURLのうしろに?が付いてパラメータ値的なものを渡しているのを見かけるけど、これと同じ仕組みって事だね。
これは、flask3b.pyと同じパターンだけど、**kwargsを使ってもう少しPythonっぽい感じになるね。
(つづく)