其實,你在Django有完全相同的選擇。 Django在某些部分是基於WSGI構建的,因此理論上可以在Django中編寫WSGI中間件或Django中間件。您之所以不會產生混淆的原因是因爲Django社區通常會將開發人員從WSGI中間件中引導出來。其中一個原因是因爲Django被設計爲在mod_python和WSGI上平等地工作。通過使用Django中間件,您的中間件可以在兩個系統上運行(請參閱this post by James Bennett)。
創建WSGI中間件的一個優點是它可以用在多個框架中。例如,Beaker是一個可用於任何WSGI框架的會話和緩存WSGI中間件。如果它是專門爲Flask編寫的,那麼金字塔開發人員就不能使用它。圖書館的維護人員特別確保圖書館可以在多個框架中工作,因此他將其作爲WSGI圖書館編寫。
基本上,這是我怎麼會做出我的決定:
- 如果你只是寫一箇中間件,做一些具體的事情你的應用程序,使用框架的中間件。
- 如果您認爲您的中間件在您的幾個應用程序中很有用,並且可能對其他人有幫助,那麼仍然使用您的框架的中間件(Flask通常稱爲「擴展」)。以Flask-SQLAlchemy爲例。
- 如果人們對中間件真正感興趣,並且願意幫忙,可以考慮將其轉換爲WSGI中間件庫,以便可以在其他框架中使用它。
偉大的答案 - 謝謝馬克! – bmaeser 2012-08-13 13:12:01