一般的に使用されるいくつかの Python Web フレームワークについて深く理解する
さまざまな言語プラットフォームの中で、Python はおそらく最も多くの Web フレームワークが登場しており、無数のマイクロフレームワークやフレームワークが存在し、百花繚乱の世界です。その理由は、Python でフレームワークを構築するのが非常に簡単だからだと思います。ホイールを回転し続けることが発明されました。
Python コミュニティでは、Python フレームワークの長所と短所についてのトピックが常に存在します。いくつかの主要な Python フレームワークを紹介します。
Django
Django は最も有名な py フレームワークであり、Erlang にも影響を受けるフレームワークがあります。
Django は、大規模で包括的な方向を向いています。完全に自動化された管理バックエンドで最も有名です。ORM を使用して簡単なオブジェクト定義を行うだけで、データベース構造とフル機能の管理バックエンドを自動的に生成できます。
Django によって提供される利便性は、Django の組み込み ORM がフレームワーク内の他のモジュールと高度に結合されていることも意味します。
アプリケーションは Django の組み込み ORM を使用する必要があります。そうしないと、フレームワークで提供されるさまざまな ORM ベースの利便性を享受できなくなります。理論的には、ORM モジュールを切り替えることができますが、これは解体して改修することと同じです。装飾された家は、最初から大まかな部屋に行って真新しい装飾を行う方が良いです。
Django のセールスポイントは非常に高い開発効率ですが、パフォーマンスの拡張には限界があり、トラフィックが一定の規模に達した後、パフォーマンス要件を満たすためにプロジェクトを再構築する必要があります。
Django の欠点は、主に Django がすべてのホイールを独自に作成することに固執していることに起因します。Django の最も批判されている側面は次のとおりです。
· システムが密接に結合していると感じた場合。 Django への組み込みはあまり良くなく、後述する ORM や Template などの好みのサードパーティ ライブラリに置き換えるのは困難です。 Django で SQLAlchemy や Mako を使用することはほぼ不可能であり、いくつかのパッチがあっても、非常に非常にぎこちなく感じるでしょう。
· Django に付属する ORM は SQLAlchemy よりもはるかに強力ではありません。Django を除いて、SQLAlchemy は Python の世界における事実上の ORM 標準です。しかし、Django は依然として独自のセットを主張しています。 Django の開発者も SQLAlchemy をサポートしようと議論し、試みてきましたが、コストが高すぎることと、他の Django モジュールとの統合が難しいため最終的に断念したと推定されています。
· Template 関数は比較的弱いため、Python コードに挿入することはできません。より複雑なロジックを作成するには、Python を使用してタグまたはフィルターを実装する必要があります。 Django のテンプレート システムの設計は非常に興味深いものであり、そのフレームワークの中で最も影響力があり、物議を醸す部分となるはずです。
Django テンプレートの設計理念は、コードとスタイルを完全に分離することです。asp.net はコードとテンプレートを分離することを推奨していますが、技術的には依然として混合することができますが、Django ではテンプレート内のコーディングとデータ処理が基本的に排除されています。
たとえば、asp.net テンプレートでは次のように記述できます:
<%
int i;
for(i==0;i<10;i++){
....
}
%>
Django は上記のような埋め込みコードをまったくサポートしておらず、実際にはテンプレートに組み込まれた関数のみを使用できます。は非常にシンプルなので、そのテンプレートをさまざまなプラットフォームに移植することもできます。
ほとんどの場合、Django のテンプレート機能で十分ですが、特別な状況 (「特別」がそれほど特別ではない場合もあります) では、テンプレートにコードを埋め込む必要があり、そのルールに従ってテンプレートを作成する必要があります。テンプレート システムの拡張機能。場合によっては、テンプレートに直接
1 行のコードを記述することで解決できる問題が、テンプレート拡張機能を使用して実装すると、数十行以上のコードになる場合があります。
テンプレートでのプログラミングが許容されるかどうかは、Django テンプレートの最も物議を醸す側面です。
Pylons & TurboGears & repoze.bfgDjango のほかに、もう 1 つの大きなものは Pylons です。これは、TurboGears2.x が Pylons に基づいており、repoze.bfg も TurboGears プロジェクトのこの大規模プロジェクトに組み込まれているためです。 repoze.bfg については後で個別に説明しません。
Pylons と Django の設計コンセプトは完全に異なります。Pylons 自体には約 2,000 行の Python コードしかありませんが、Pylons でほぼ使用されているいくつかのサードパーティ モジュールも付属しています。 Pylons には棚とオプションが 1 つだけ用意されており、自分の好みに応じてカスタマイズできます テンプレート、ORM、フォーム、認証などのコンポーネントを自由に選択できるため、システムは高度にカスタマイズ可能です。 Python はグルー言語であるとよく言われますが、Pylons はグルー言語で設計されたグルー フレームワークであると間違いなく言えます。 Pylons を選択することは、おそらくその自由を選択していることを意味します: · 悪夢を学習する Pylons は、Pylons が作成したものではない多くのサードパーティ ライブラリに依存しています。これらのライブラリの使用方法を学ぶために重要なのは、何を学びたいのかわからない場合があるということです。 Pylons の学習曲線は Django よりも相対的に高く、Pylons の以前の公式ドキュメントは批判の対象となっていましたが、幸いなことに、後に The Definitive Guide to Pylons という本が出版され、この状況は変わりました。このため、Pylons はかつては専門家のみに適した Python フレームワークとして知られていました。 · デバッグは悪夢です。多くのモジュールが関係しており、一度エラーが発生すると、問題を特定するのが困難です。あなたが書いたプログラムのせいかもしれないし、Pylons が間違っているかもしれないし、SQLAlchemy が間違っているかもしれないし、あるいは formencode にバグがあるかもしれません。とにかく、非常に厄介です。この問題は、それに精通している場合にのみ解決できます。 · Pylons をインストールするには、それぞれ独自のバージョン番号を持つ 20 個近くの Python モジュールをインストールする必要があり、どのモジュールでも互換性の問題が発生する可能性があります。難しい。これまでのところ、reddit の Pylons はまだ antique バージョン 0.9.6 のままで、SQLAlchemy はまだバージョン 0.5.3 のままですが、これはこれと関係があるはずです。 Pylons と repoze.bfg の統合により、Django の地位に挑戦できる次のフレームワークが誕生する可能性があります。 Tornado ( http://www.tornadoweb.org ) は Facebook のオープンソース フレームワークであり、その哲学は Django の両極端に近いものです。 Tornado は Web サーバー (この記事では詳しく説明しません) であり、web.py に似たマイクロ フレームワークでもあります。 Tornado は、より正確ですが、テンプレート機能も提供します。推奨されていませんが、作成者はテンプレートに少量のコーディングを許可できます (py コードを 1 行直接埋め込みます)。 asp.net と比較すると、Tornado は少し似ていて、AsyncHttpHandler のみを実装しているため、すべてを自分で実装する必要があります。 実際には、テンプレート、国際化サポート、さらにはサードパーティのログインを容易にする組み込みの OAuth/OpenID モジュールがあり、実際には HTTP サーバーを直接実装しています。 しかし、ORM はなく (mysql の非常に単純なカプセル化だけ)、Django のような自動化されたバックエンドはおろか、セッションのサポートさえありません。 大規模な Web サイトでは、高いパフォーマンス要件の下で、フレームワークの各部分をカスタマイズする必要があることが多く、Django で開発された Web サイトの場合、各部分が継続的にカスタマイズされているとします。はい、これが最初に Tornado が提供できるものである可能性が非常に高いです。 異なる道は同じ目的地につながります。 Comet/バックエンドの非同期呼び出しを HTTP インターフェースに効率的に実装するために、Tornado は HTTP サーバーを直接埋め込みます。 フロントエンドは、apache/lighttpd/nginx などを追加しなくてもブラウザからアクセスできますが、HTTP 1.1 プロトコルを完全には実装していないため、公式ドキュメントではフロントエンドで nginx を使用することをユーザーに推奨しています。運用環境、および複数の Tornado インスタンスへのバックエンド リバース プロキシ。 Tornado 自体はシングルスレッドの非同期ネットワーク プログラムであり、デフォルトで起動すると、マルチコア CPU を最大限に活用して、CPU の数に応じて複数のインスタンスを実行します。 ウェブサイトは基本的にデータベース操作を行いますが、Tornado はシングルスレッドです。つまり、データベース クエリの戻りが遅すぎると、サーバーの応答全体がブロックされます。 データベース クエリは本質的にリモート ネットワーク呼び出しであり、理想的にはこれらの操作は非同期としてカプセル化されますが、Tornado はこれをサポートしていません。 システムが高トラフィックに対応するには、データベースのクエリ速度の問題を解決する必要があります。 データベースにクエリのパフォーマンスの問題がある場合、システム全体がどれほど最適化されていても、データベースがボトルネックとなり、システム全体の速度が低下します。 非同期は **本質的に** システムのパフォーマンスを向上させません。ネットワーク応答の不要な待機とスイッチング スレッドの CPU 消費を回避するだけです。 データベース クエリの応答が遅すぎる場合、解決する必要があるのは、データベースを呼び出すフロントエンド Web アプリケーションではなく、データベースのパフォーマンスの問題です。 リアルタイムで返されるデータ クエリの場合、理想的には、すべてのデータがメモリ内にあることを確認する必要があり、データベース ハード ディスク IO が 0 である必要があります。データベース クエリが十分に高速であれば、フロントエンド Web アプリケーションはデータを保存できません。クエリを非同期としてカプセル化する必要があります 。 コルーチンを使用する場合でも、非同期プログラムは常に同期プログラムの複雑さを増大させます。測定する必要があるのは、追加の複雑さに対処する価値があるかどうかです。 バックエンドにバイパスするには遅すぎるクエリがある場合、Tornado の提案は、これらのクエリをバックエンドで独立して HTTP インターフェイスにカプセル化し、Tornado の組み込み非同期 HTTP クライアントを使用してそれらを呼び出すことです。
以上が一般的に使用されるいくつかの Python Web フレームワークについて深く理解するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









PHPは主に手順プログラミングですが、オブジェクト指向プログラミング(OOP)もサポートしています。 Pythonは、OOP、機能、手続き上のプログラミングなど、さまざまなパラダイムをサポートしています。 PHPはWeb開発に適しており、Pythonはデータ分析や機械学習などのさまざまなアプリケーションに適しています。

PHPはWeb開発と迅速なプロトタイピングに適しており、Pythonはデータサイエンスと機械学習に適しています。 1.PHPは、単純な構文と迅速な開発に適した動的なWeb開発に使用されます。 2。Pythonには簡潔な構文があり、複数のフィールドに適しており、強力なライブラリエコシステムがあります。

VSコードはPythonの書き込みに使用でき、Pythonアプリケーションを開発するための理想的なツールになる多くの機能を提供できます。ユーザーは以下を可能にします。Python拡張機能をインストールして、コードの完了、構文の強調表示、デバッグなどの関数を取得できます。デバッガーを使用して、コードを段階的に追跡し、エラーを見つけて修正します。バージョンコントロールのためにGitを統合します。コードフォーマットツールを使用して、コードの一貫性を維持します。糸くずツールを使用して、事前に潜在的な問題を発見します。

VSコードはWindows 8で実行できますが、エクスペリエンスは大きくない場合があります。まず、システムが最新のパッチに更新されていることを確認してから、システムアーキテクチャに一致するVSコードインストールパッケージをダウンロードして、プロンプトとしてインストールします。インストール後、一部の拡張機能はWindows 8と互換性があり、代替拡張機能を探すか、仮想マシンで新しいWindowsシステムを使用する必要があることに注意してください。必要な拡張機能をインストールして、適切に動作するかどうかを確認します。 Windows 8ではVSコードは実行可能ですが、開発エクスペリエンスとセキュリティを向上させるために、新しいWindowsシステムにアップグレードすることをお勧めします。

VSコード拡張機能は、悪意のあるコードの隠れ、脆弱性の活用、合法的な拡張機能としての自慰行為など、悪意のあるリスクを引き起こします。悪意のある拡張機能を識別する方法には、パブリッシャーのチェック、コメントの読み取り、コードのチェック、およびインストールに注意してください。セキュリティ対策には、セキュリティ認識、良好な習慣、定期的な更新、ウイルス対策ソフトウェアも含まれます。

Pythonは、スムーズな学習曲線と簡潔な構文を備えた初心者により適しています。 JavaScriptは、急な学習曲線と柔軟な構文を備えたフロントエンド開発に適しています。 1。Python構文は直感的で、データサイエンスやバックエンド開発に適しています。 2。JavaScriptは柔軟で、フロントエンドおよびサーバー側のプログラミングで広く使用されています。

PHPは1994年に発信され、Rasmuslerdorfによって開発されました。もともとはウェブサイトの訪問者を追跡するために使用され、サーバー側のスクリプト言語に徐々に進化し、Web開発で広く使用されていました。 Pythonは、1980年代後半にGuidovan Rossumによって開発され、1991年に最初にリリースされました。コードの読みやすさとシンプルさを強調し、科学的コンピューティング、データ分析、その他の分野に適しています。

VSコードでは、次の手順を通じて端末でプログラムを実行できます。コードを準備し、統合端子を開き、コードディレクトリが端末作業ディレクトリと一致していることを確認します。プログラミング言語(pythonのpython your_file_name.pyなど)に従って実行コマンドを選択して、それが正常に実行されるかどうかを確認し、エラーを解決します。デバッガーを使用して、デバッグ効率を向上させます。
