Flask初歩の初歩
今回は、Flaskの初歩の初歩と題してFlaskのインストール、レスポンス返却、テンプレート利用まで説明したいと思います。
はじめに
本来は、”Flaskとは”といった説明をしたいところですが、私も使い始めたばかりですので十分理解はしていません。
ただ、Djangoに比べると実装上の制約が少なく柔軟にアプリケーションを作成できるということは間違いないと思います。
さらには、Flask用の拡張モジュールをインストールすることで、必要な部分を拡張して生産性をあげたりシステムを堅牢化することも可能という便利なフレームワークだと思います。
検証環境はMac(macOS Monterey バージョン12.0.1)ですが、Windowsでもほぼそのまま使えると思います。
インストール
まずは仮想環境を設定しましょう。
任意のディレクトリにて、以下のように行います。
% python3 -m venv flask
% source flask/bin/activate
(flask) %
仮想環境は便利ですが、初めての方は以下の記事を参考にしてください。
では次に、仮想環境上でFlaskをインストールします。
(flask) % pip install flask
Collecting flask
Downloading Flask-2.0.2-py3-none-any.whl (95 kB)
|████████████████████████████████| 95 kB 2.8 MB/s
Collecting Jinja2>=3.0
Downloading Jinja2-3.0.3-py3-none-any.whl (133 kB)
|████████████████████████████████| 133 kB 4.4 MB/s
Collecting click>=7.1.2
Downloading click-8.0.3-py3-none-any.whl (97 kB)
|████████████████████████████████| 97 kB 5.1 MB/s
Collecting itsdangerous>=2.0
Downloading itsdangerous-2.0.1-py3-none-any.whl (18 kB)
Collecting Werkzeug>=2.0
Downloading Werkzeug-2.0.2-py3-none-any.whl (288 kB)
|████████████████████████████████| 288 kB 4.8 MB/s
Collecting MarkupSafe>=2.0
Downloading MarkupSafe-2.0.1-cp39-cp39-macosx_10_9_universal2.whl (18 kB)
Installing collected packages: MarkupSafe, Werkzeug, Jinja2, itsdangerous, click, flask
Successfully installed Jinja2-3.0.3 MarkupSafe-2.0.1 Werkzeug-2.0.2 click-8.0.3 flask-2.0.2 itsdangerous-2.0.1
仮想環境上では、pip3はpip、python3はpythonとしてシンボリックリンクが作成されていますので便利です。
単純に値を返却
次に、単純に値を返却するコードを書いてみましょう。
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
name = "Hello World"
return name
app.run(port=8888 ,debug=True)
上記は、ポート8888にアクセスすると、”Hello World”を返却するコードです。
ブラウザから以下を入力し実際に動かしてみます。
http://localhost:8888/
ターミナルは以下のように表示されていると思います。
(flask) % /usr/bin/env /Users/takamotokeiji/pythonvenv/flask/bin/python /Users/takamotokeiji/.vscode/extensions/ms-python.python-2021.12.1559732655/pythonFiles/lib/python/debugpy/launcher 51193 -- /Users/takamotokeiji/github/takamotobiz/hnderp2/hello.py
* Serving Flask app 'hello' (lazy loading)
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: on
* Running on http://127.0.0.1:8888/ (Press CTRL+C to quit)
* Restarting with stat
* Debugger is active!
* Debugger PIN: 649-814-716
127.0.0.1 - - [31/Dec/2021 18:05:48] "GET / HTTP/1.1" 200 -
テンプレートの使用
次に、テンプレートを使ってみます。
テンプレートとは、Python上の変数をhtml上のキーを連携させる機能で、下記のコードではtitle、nameをhtmlに引き渡して(マッピングして)います。
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def hello():
return render_template('jinjya.html', title='Flask jinjya', name='Jinja')
app.run(port=8888 ,debug=True)
htmlファイル(jinjya.html)は、ディレクトリtemplates(デフォルト)に配置します。
(flask) % tree
.
├── hello.py
├── jinjya.py
└── templates
├── jinjya.html
└── pgsql.html
jinjya.htmlの内容は以下のようになります。
<!doctype html>
<html>
<head>
<title>{{ title }}</title>
</head>
<body>
<h3>Hello</h3>
こんにちは。{{ name }}さん。
</body>
</html>
ブラウザからアクセスした結果は以下となります。
まとめ
今回は、Flaskの初歩の初歩ということで、Flaskをインストールし簡単なプログラムを動かしてみました。
次回は、データベースとの連携を行いたいと思います。
コメント