Webフレームワークは、信頼性が高く、拡張性と保守性の高いWebアプリケーションを構築するための共通パターンを提供することによって、Web開発を迅速かつ容易にするコードライブラリです。
Why are web frameworks useful?
開発者が過去 20 年間に Web 用サイトやアプリケーションをプログラミングしながら学習したことを Web フレームワークにカプセル化しています。
一般的な Web フレームワークの機能
フレームワークは、Web アプリケーションの実行に必要な共通の操作を実行するための機能を、コード内または拡張機能を通して提供します。 これらの共通の操作には以下が含まれます。
- URL ルーティング
- Input form handling and validation
- HTML, XML, JSON, and other outputformats with a templating engine
- Database connection configuration and persistent data manipulation through an object-relational mapper (ORM)
- Web security againstCross-site request forgery (CSRF);Cross-site request forgeryに対するWebセキュリティ。 SQL インジェクション、クロスサイト スクリプティング (XSS)、その他の一般的な悪意のある攻撃
- セッションの保存と取得
すべての Web フレームワークに上記の機能すべてに対するコードが含まれているわけではありません。フレームワークは、単一のユースケースを実行するものから、すべての開発者に既知の Web フレームワークの機能を提供するものまで、さまざまな種類があります。
たとえば、Django Web アプリケーションフレームワークは、開発者がリレーショナルデータベースの読み取り、書き込み、クエリー、および削除操作を SQL ではなく Python コードで書くことを可能にする Django ORM 層を含んでいます。
Flask や Pyramid などの他の Web フレームワークのいくつかは、外部の Python ライブラリを組み込むことにより、非リレーショナル データベースを使用するのが簡単です。
一方では簡単に拡張できる最低限の機能、もう一方では緊密に統合してフレームワークにすべてを含むというスペクトルが存在します。 もしあなたが初心者プログラマーで、ちょうど alearning プロジェクトとして Web アプリケーションに取り組みたいのであれば、フレームワークは、URL ルーティング、データ操作、Web アプリケーションの大部分に共通する認証などの listedabove の概念を理解するのに役立ちます。
一方、あなたがかなりの web 開発経験を持つベテランプログラマーなら、既存のフレームワークはあなたのプロジェクトの要件に合致しないように感じるかもしれません。 その場合、Werkzeug forWSGI plumbing のようなオープンソースライブラリを独自のコードと組み合わせて、独自のフレームワークを作成することができます。
要するに、Web アプリケーションを構築するために Web フレームワークを使用する必要があるかどうかは、あなたの経験と何を達成しようとしているかに依存します。
Talk Python to Me に、Django、Flask、Tornado、および Pyramid フレームワークの詳細な比較を含むポッドキャストのエピソードがありました。
また、compare-python-web-framework というリポジトリがあり、同じ Web アプリケーションをさまざまな Python Webframeworks、テンプレートエンジン、オブジェクトリレーショナルマッパーでコーディングされています。
Web framework resources
-
Building Your Own Python Web Framework is an amazing way to learn how the WSGI works and the many other pieces that combine to make web frameworks useful to web developers.
-
12 requests per secondexamines are how the traditionally synchronous web frameworkFlask compare to an async framework like Sanic in a artificial, simple benchmark.This is the traditional synchronous web frameworks in the same same website. この結果は、Sanic が Flask よりもはるかに高速であるように見えますが、データベース・クエリやテンプレートなど、プロジェクトに基本的な機能さえ追加すれば、結果は同じになるとのことです。
-
1 つ以上の Web フレームワークの使用方法を学ぶとき、カバーの下のコードが何をしているのかについて知ることは役に立ちます。 この投稿では、ゼロから簡単な Python フレームワークを構築することで、HTTP 接続、ルーティング、およびリクエストが、わずか 320 行のコードでどのように動作するのかを示しています。
-
また、Python で独自の Web フレームワークを構築するための、より最近の複数パートからなるチュートリアルも存在します。
- 第1部:リクエストの処理
- 第2部:ルーティング、クラスベースのハンドラ、ユニットテスト
- 第3部:PythonでのWebフレームワークの構築
- 第1部:リクエストの処理
- 第2部:ルーティング、クラスベースのハンドラ、ユニットテスト
- 第3部:ルーティング、クラスベースのハンドラ、ユニットテストli Test Client and Templating Support
- Part 4: Exception Handling, Static Files and Middleware
-
Check out the answer to the”What is a web framework and how does it compare to LAMP?”question on Stack Overflow.
-
Another great series that digs behind the web framework magic is”Web Application from Scratch”. The four parts are:
- Part 1: handling HTTP requests and responses
- Part 2: abstracting Requests, Responses and Servers
- Part 3: request handlers and middleware
- Part 4: abstracting applications
-
Frameworks is a really well done short videothat explains how to choose between web frameworks. The author has someparticular opinions about what should be in a framework. For the most partI agree although I’ve found sessions and database ORMs to be a helpfulpart of a framework when done well.
-
Django vs Flask vs Pyramid:
-
Django vs Flask vs Pyramid: Choosing a Python Web Framework には、背景情報と、これら 3 つの大きな Python フレームワークで構築した類似の Web アプリケーションのコード比較が含まれています。
-
Python’s Web Frameworks benchmark は、オブジェクトを JSON にエンコードして応答として返すことと、データベースからデータを取得してテンプレートでレンダリングすることで、フレームワークの応答性をテストするものです。
-
What web frameworks do you use and why are they awesome?は、Webフレームワークに関する言語にとらわれないRedditのディスカッションです。 Python の主要なフレームワークと比較して、他の言語のプログラマが彼らの一連の Web フレームワークについて何を好み、何を嫌っているかを見るのは興味深いことです。
-
このユーザー投票による質問 & 回答サイトは、「実運用で使用できる最高の汎用 Python Web フレームワークは何ですか」と質問しています。 2019年のDjango vs. Flask: Which Framework to Choosでは、教育や開発の観点から、DjangoとFlaskの最高のユースケースと、それらのユニークな点を考察しています。
-
11 new Python web frameworksでは、Sanic、Masonite、Moltenなど、まだ登場していないいくつかの新しいフレームワークについて簡単に説明しています。
Webフレームワーク学習チェックリスト
-
Choose a major Python web framework (Django orFlask is recommended) and stick with it. 始めたばかりのときは、すべてのフレームワークを理解しようとあちこちに行くのではなく、まず1つのフレームワークを学ぶのがベストです。
-
Work through a detailed tutorial found within the resources links on theframework’s page.
-
Study open source examples built with your framework of choice so you cantake parts of those projects and reuse the code in your application.
-
Build the first simple iteration of your web application then go tothe deployment section to make it accessible on theweb.