PythonのウェブフレームワークであるFlaskを学ぶ。
Flaskは、Pythonのウェブフレームワークです。
- 和英 : (flǽsk)〔実験で使う〕フラスコ〔ウイスキーなどの〕フラスコ瓶
Flaskは、Bottleと同じくらい簡単に使えるが、Facebook認証やデータベース統合など、本格的なウェブ開発で役に立つ様々な拡張を備えている。
ウェブフレームワークは、クライアントからの要求とサーバの応答を処理してくれます。
Python Webフレームワーク Django vs Pyramid vs Flask 2015年12月 - Qiita
WSGIライブラリのwerkzeugとjinja2が入っています。
WSGIとは、PythonでのWebサーバとWebアプリケーションをつなぐインターフェースを定義した仕様です。
- 正式名称 : Web Server Gateway Interface
- 読み方 : ウィズギー
- 定義 : PEP 333 -- Python Web Server Gateway Interface v1.0 | Python.org
WSGIはJavaにおけるJava Servelet APIと同じように,WebサーバとWebアプリケーション間の汎用的なインターフェースを定義しています。WSGIを利用することで,WebサーバとWebアプリケーションの実装を切り離すことができ,WebサーバとWebアプリケーションフレームワークの組み合わせを柔軟に選択することができるようになりました。
gihyo.jp
本を見ながら実際にFlaskを使ってみます。
Flaskをインストールします。
# インストールします。 $ pip3 install flask Collecting flask Downloading https://files.pythonhosted.org/packages/7f/e7/08578774ed4536d3242b14dacb4696386634607af824ea997202cd0edb4b/Flask-1.0.2-py2.py3-none-any.whl (91kB) 100% |████████████████████████████████| 92kB 701kB/s Collecting click>=5.1 (from flask) Downloading https://files.pythonhosted.org/packages/fa/37/45185cb5abbc30d7257104c434fe0b07e5a195a6847506c074527aa599ec/Click-7.0-py2.py3-none-any.whl (81kB) 100% |████████████████████████████████| 81kB 2.3MB/s Collecting Jinja2>=2.10 (from flask) Downloading https://files.pythonhosted.org/packages/7f/ff/ae64bacdfc95f27a016a7bed8e8686763ba4d277a78ca76f32659220a731/Jinja2-2.10-py2.py3-none-any.whl (126kB) 100% |████████████████████████████████| 133kB 1.3MB/s Collecting Werkzeug>=0.14 (from flask) Downloading https://files.pythonhosted.org/packages/20/c4/12e3e56473e52375aa29c4764e70d1b8f3efa6682bef8d0aae04fe335243/Werkzeug-0.14.1-py2.py3-none-any.whl (322kB) 100% |████████████████████████████████| 327kB 2.2MB/s Collecting itsdangerous>=0.24 (from flask) Downloading https://files.pythonhosted.org/packages/76/ae/44b03b253d6fade317f32c24d100b3b35c2239807046a4c953c7b89fa49e/itsdangerous-1.1.0-py2.py3-none-any.whl Collecting MarkupSafe>=0.23 (from Jinja2>=2.10->flask) Downloading https://files.pythonhosted.org/packages/da/fc/2979c425ad23d528d6ac2e1f3efdc28e572fa1e1fbd5a75171cbdd7ddaa5/MarkupSafe-1.1.0-cp36-cp36m-macosx_10_6_intel.whl Installing collected packages: click, MarkupSafe, Jinja2, Werkzeug, itsdangerous, flask Successfully installed Jinja2-2.10 MarkupSafe-1.1.0 Werkzeug-0.14.1 click-7.0 flask-1.0.2 itsdangerous-1.1.0 # バージョン確認します。 $ flask --version Flask 1.0.2 Python 3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 03:03:55) [GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] $ pip3 -V pip 18.1 from /Users/mana/Dropbox/ApacheDcumentRoot/Slack-Python-Onboarding-Tutorial/tryFlask/lib/python3.6/site-packages/pip (python 3.6)
リクエストの入口にする try_flask.py を作ります。
ホーム画面用の index.html を作ります。
jinja2を体験してみます。
jinja2は、Python用のテンプレートエンジンです。
テンプレートのHTMLを作ります。
# templatesディレクトリを作成して、 $ mkdir templates # その中にHTMLを作ります。 $ echo -n > templates/jinja2.html
動かしてみます。
$ python3 try_flask.py * Serving Flask app "try_flask" (lazy loading) * Environment: production WARNING: Do not use the development server in a production environment. Use a production WSGI server instead. * Debug mode: on * Running on http://127.0.0.1:8080/ (Press CTRL+C to quit) * Restarting with stat * Debugger is active! * Debugger PIN: 256-786-415 127.0.0.1 - - [09/Jan/2019 23:23:34] "GET /echo/ponsuke_tarou HTTP/1.1" 200 - 127.0.0.1 - - [09/Jan/2019 23:24:45] "GET /echo?name=ponsuke_tarou&do=%27write%20HatenaBlog%27 HTTP/1.1" 301 - 127.0.0.1 - - [09/Jan/2019 23:24:45] "GET /echo/?name=ponsuke_tarou&do=%27write%20HatenaBlog%27 HTTP/1.1" 200 - 127.0.0.1 - - [09/Jan/2019 23:34:24] "GET /echo/?name=ponsuke_tarou&do=HatenaBlog%E3%82%92%E6%9B%B8%E3%81%84%E3%81%A6 HTTP/1.1" 200 - * Detected change in '/path/to/try_flask.py', reloading * Restarting with stat * Debugger is active! * Debugger PIN: 256-786-415