実際、Django でもまったく同じ選択肢があります。Django の一部は WSGI 上に構築されているため、理論的には WSGI ミドルウェアまたは Django ミドルウェアを Django で作成することもできます。混乱しない理由は、Django コミュニティが通常、開発者を WSGI ミドルウェアから遠ざけるためです。理由の 1 つは、Django がmod_pythonと WSGI で同等に動作するように設計されているという事実によるものです。Django ミドルウェアを使用すると、ミドルウェアは両方のシステムで動作します ( James Bennett によるこの投稿を参照してください)。
WSGI ミドルウェアを作成する利点の 1 つは、複数のフレームワークで使用できることです。たとえば、Beakerは、任意の WSGI フレームワークで使用できるセッションおよびキャッシング WSGI ミドルウェアです。それが特に Flask で書かれている場合、Pyramid 開発者はそれを使用できません。ライブラリのメンテナーは、ライブラリが複数のフレームワークで機能することを明確に確認したため、WSGI ライブラリとして記述しました。
基本的に、これは私が私の決定を下す方法です:
- アプリケーションに固有の処理を行うミドルウェアを作成する場合は、フレームワークのミドルウェアを使用してください。
- ミドルウェアがいくつかのアプリで有用であり、他の人にも役立つ可能性があると思われる場合でも、フレームワークのミドルウェアを使用してください (Flask が通常「拡張機能」と呼ぶもの)。例として、Flask-SQLAlchemyを参照してください。
- 人々があなたのミドルウェアに本当に興味を持ち、助けてくれるなら、それを WSGI ミドルウェア ライブラリに変換して、他のフレームワークで使用できるようにすることを検討してください。