Flask初歩の初歩

今回は、Flaskの初歩の初歩と題してFlaskのインストール、レスポンス返却、テンプレート利用まで説明したいと思います。

はじめに

本来は、"Flaskとは"といった説明をしたいところですが、私も使い始めたばかりですので十分理解はしていません。

ただ、Djangoに比べると実装上の制約が少なく柔軟にアプリケーションを作成できるということは間違いないと思います。

さらには、Flask用の拡張モジュールをインストールすることで、必要な部分を拡張して生産性をあげたりシステムを堅牢化することも可能という便利なフレームワークだと思います。

検証環境はMac(macOS Monterey バージョン12.0.1)ですが、Windowsでもほぼそのまま使えると思います。

インストール

まずは仮想環境を設定しましょう。
任意のディレクトリにて、以下のように行います。

% python3 -m venv flask
% source flask/bin/activate
(flask) % 

仮想環境は便利ですが、初めての方は以下の記事を参考にしてください。

VSCodeでのPython仮想環境の使用

最近、Pythonの仮想環境が便利だと気づき、VSCodeでの使用方法を書きます。 はじめに 最近、少しづつですが、いろいろなお客さまの開発を行うようになりました。 お客さま…

では次に、仮想環境上で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>

ブラウザからアクセスした結果は以下となります。

jinjya.pyの実行結果

まとめ

今回は、Flaskの初歩の初歩ということで、Flaskをインストールし簡単なプログラムを動かしてみました。

次回は、データベースとの連携を行いたいと思います。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

11 + eighteen =