Flaskの基本機能と実装

Flaskは2010年に登場し、Pythonウェブフレームワークの長所を集約したマイクロフレームワークです。以下にその主要な特徴を紹介します。

主な特徴

  • 内蔵開発サーバーとデバッガー
  • Pythonのユニットテスト機能とのシームレスな統合
  • Jinja2テンプレートエンジンの使用
  • WSGI 1.0規格への完全対応
  • Unicodeベースの文字コード(デフォルトでUTF-8をサポート)

環境構築

1. Flaskのインストール

pip install Flask

2. SQLAlchemyのインストール

pip install SQLAlchemy

3. Flask-WTFのインストール

Flask-WTFはHTMLフォーム処理を簡略化するためのライブラリです。

pip install Flask-WTF

Hello Worldサンプル

以下のコードはFlaskを使ったシンプルなHello Worldアプリケーションです。


#!/usr/bin/env python
# coding: utf-8

from flask import Flask

web_app = Flask(__name__)

@web_app.route('/')
def greet():
    return 'こんにちは、世界!'

if __name__ == '__main__':
    web_app.run()

Flaskの内部動作

1. アプリケーションの初期化

Flaskオブジェクトを作成することで、アプリケーションが設定されます。このとき、`__name__`パラメーターは、テンプレートや静的ファイルの位置を特定するために使用されます。

2. ルーティングの仕組み

`route`デコレーターを使用して、URLパターンを関数にマッピングできます。例えば、`GET`リクエストだけでなく、`POST`などの他のHTTPメソッドも指定可能です。


@web_app.route('/example', methods=['POST'])
def example_handler():
    return 'POSTリクエストを受け取りました'

追加機能

1. ルートの逆生成

`url_for`関数を使用すると、関数名からURLを生成することができます。

2. コンテキスト管理

2.1 セッション管理

Flaskでは、`session`オブジェクトを使ってセッションデータを管理します。これはCookieベースの実装であり、複数のリクエスト間でデータを共有します。


from flask import Flask, session
import datetime

app = Flask(__name__)
app.secret_key = '秘密鍵を設定'

@app.route('/set_session')
def set_session():
    session['timestamp'] = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
    return session['timestamp']

@app.route('/get_session')
def get_session():
    return session.get('timestamp', 'セッションが存在しません')
2.2 アプリケーショングローバルオブジェクト

`g`オブジェクトを使用することで、リクエストごとに共有されるデータを保持できます。

2.3 リクエストコンテキスト

`request`オブジェクトを通じて、クライアントからのデータ(URLパラメーター、フォームデータなど)にアクセスできます。

2.4 コールバックフック

Flaskは、リクエストの前後で共通の処理を実行できるように、以下のデコレーターを提供しています。

  • `before_request`: リクエスト前に実行
  • `after_request`: リクエスト後に実行
  • `teardown_request`: リクエスト終了時に必ず実行(例外発生時も含む)

タグ: flask Python WebFramework

5月18日 18:45 投稿