Python-web-development-libraries-pyramid-framework
ピラミッドフレームワーク
Pyramidは、Pythonで構築された一般的なオープンソースのWebアプリケーション開発フレームワークです。 Python開発者は簡単にWebアプリケーションを作成できます。
インストール、起動、構成
「小さな開始、大きな終了、完成したフレームワーク」で説明したように、PyramidはFlaskに非常に似ており、インストールと実行にほとんど手間がかかりません。 実際、このアプリケーションの構築を開始すると、いくつかのパターンがFlaskに似ていることがわかります。
ピラミッドフレームワーク環境を作成する手順は次のとおりです-
- まず、プロジェクトディレクトリを作成します。 ここでは、 pyramidProject という名前のディレクトリを作成しました(任意の名前を選択できます)。
- 次に、プロジェクト固有のすべての依存関係をインストールする仮想環境を作成します。 ここでは、Pyramidがインストールされている pyramidEnv という名前の仮想環境フォルダーを作成しました。
- 次に、ディレクトリ pyramidEnv に移動し、 pip install pyramid を使用してピラミッドをインストールします。
上記のようにすべてが完了すると、ディレクトリ構造は次のようになります-
そして、システムにインストールされているピラミッドのバージョンは以下のとおりです-
コアコンセプト
Pyramidフレームワークは、以下のコアコンセプトに基づいています-
- Zope (拡張性、トラバーサル、宣言型セキュリティ)-Pyramidは、拡張性、トラバーサルの概念、および宣言型セキュリティの点でZopeに大まかに基づいています。
- Pylons (URLディスパッチ、永続性の非意見ビュー、テンプレートなど)-pyramidがそのコンセプトを引き出すもう1つの領域は、pylonsプロジェクトです。 Pylonsには、ピラミッドフレームワーク内でURLディスパッチを呼び出すルートの概念があり、永続層またはテンプレートの非意見ビューもあります。
- Django (表示、ドキュメントのレベル)-PyramidはDjangoからヒントを得ます。 表示方法、URLのルーティング方法、およびドキュメントのレベルは、非常にDjangoの方法です。
以下は、ピラミッドフレームワークの機能です-
- 最速の既知のPython Webフレームワークです。
- 小規模および大規模なプロジェクトをサポートします(小規模なフレームワークより大きくなったときに書き換える理由)。
- マイクロフレームワークのような単一ファイルwebappsをサポートします。
- セッションが組み込まれています。
- Plone/Zopeに似たイベントをサポートします。
- これは、トランザクション管理を提供します(以前にZopeを使用したことが既にわかっている場合)。
設定
構成は、アプリケーションの動作に影響を与える設定です。 ピラミッドアプリケーションを構成するには、命令型構成と宣言型構成の2つの方法があります。
ピラミッド構成のサポート-
- 必須の構成、またはデコレータベースの構成のオーバーライド
- 構成の競合検出(より多くのローカルvs. より少ないローカル決定)
- 構成の拡張性(複数のアプリに含まれています)
- 柔軟な認証および承認ポリシー
- プログラムによる構成のイントロスペクション(ルートの現在の状態を表示してナビゲーションを生成)
URL生成
ピラミッドでは、ルート、リソース、および静的アセットのURLを生成できます。 URL生成APIを使用するのは簡単で柔軟です。 ピラミッドのさまざまなAPIを介してURLを生成することにより、ユーザーはWebページとのリンクを壊す心配をあまりせずに、構成を任意に変更できます。
要するに、ピラミッドのURL-
- URL生成をサポートしており、リンクを中断しないようにアプリを変更できます。
- アプリケーションの内部または外部に存在する静的リソースへのURLを生成します。
- ルートとトラバーサルをサポートします。
ビュー
ピラミッドの主な仕事の1つは、要求がアプリケーションに到達したときに呼び出し可能なビューを見つけて呼び出すことです。 ビュー呼び出し可能オブジェクトは、アプリケーションで行われた要求に応じて何か面白いことをするコードの一部です。
ビューをURLディスパッチまたはpythonコードにマップすると、あらゆる種類の呼び出しが可能になります。 ビューは関数宣言またはインスタンスにすることができ、ピラミッドのビューとして使用できます。
ビューに関するいくつかの重要な点を以下に示します-
- ビューはすべての呼び出し可能オブジェクトから生成されます。
- レンダラーベースのビューは、単に辞書を返すことができます(webbyスタイルオブジェクトを返す必要はありません)。
- ルートごとに複数のビューをサポート(GET vs. POST対 HTTPヘッダーチェックなど)。
- ビュー応答アダプター(ビューの戻り値の処理方法と処理方法を指定する場合) 応答オブジェクト)。
拡張性
Pyramidは拡張性を考慮して設計されています。 そのため、ピラミッド開発者がアプリケーションの構築中に特定の制約を念頭に置いている場合、サードパーティはソースコードを変更することなくアプリケーションの動作を変更できるはずです。 特定の制約に従うピラミッドアプリケーションの動作は、変更せずにオーバーライドまたは拡張できます。 複数の環境(シングルトンなし)に柔軟に展開できるように設計されています。 Pyramidは「Tweens」ミドルウェアをサポートしています(WSGIミドルウェア、ただしPyramid自体のコンテキストで実行されます)。
Hello、Pyramidプログラムの実行
ピラミッドフレームワークをインストールした後、すべてが正常に機能しているかどうかを確認する最も簡単なプログラムは、単純な「Hello、World」または「Hello、Pyramid」プログラムを実行することです。
以下は8000ポート番号のピラミッド「Hello、Pyramid」プログラムです-
上記の簡単な例は簡単に実行できます。 これをapp.pyとして保存します(この例では、名前pyramid_helloW.pyを指定しています)。
最も単純なプログラムの実行:−
次に、ブラウザーで http://localhost:8000/ を開くと、Hello、Pyramid!が表示されます。 次のようなメッセージ-
以下は、上記のコードの説明です-
行番号 1-3
ファイルの先頭には、インポート文があります。 最初の行は、make_server関数をインポートします。make_server関数は、アプリケーションに渡されるときに単純なWebサーバーを作成できます。 2行目と3行目は、ピラミッドから構成と応答関数をインポートします。 これらの機能は、それぞれ詳細を構成し、アプリケーションのパラメーターを設定し、要求に応答するために使用されます。
行番号 5-6
これで、 hello_world という関数定義ができました。 応答を生成するビューコードを実装します。 ビューの要件を満たす関数は、要求元のエンティティに返されるテキストのレンダリングを担当します。 上記の場合、関数は呼び出されると、先ほどインポートしたResponse関数を使用します。 これは、クライアントに与えられるべき値を返します。
行番号 8
if name == ‘main’:Pythonは、このモジュールがインポートされたときではなく、「コマンドラインから実行するときにここから開始する」と言っています。
行番号 9-11
行番号 9、プログラムの上部でインポートしたconfigurator関数によって作成されたオブジェクトからconfigという変数を作成します。 行10および11は、このオブジェクトのadd_routeおよびadd_viewメソッドを呼び出します。 このメソッドは、アプリケーションで使用できるビューを定義するために使用されます。 ご覧のとおり、前に定義したhello_world関数を渡します。 これは、その機能が実際にビューとして組み込まれる場所です。
行番号 12-14
これでは、実際にconfigオブジェクトのmake_wsgi_appメソッドを呼び出してWSGIアプリケーションを作成します。 これは、追加したビューなどのオブジェクトの属性を使用して、アプリケーションを作成します。 このアプリケーションは、Webサーバーを起動してアプリケーションにサービスを提供できるオブジェクトを作成するために、インポートしたmake_server関数に渡されます。 最後の行は、このサーバーを起動します。
私たちの* hello worldアプリケーション*は、「命令型」に構成された、最もシンプルで簡単なピラミッドアプリケーションの1つです。 構成タスクを実行するときにPythonの全機能を利用できるため、これは必須です。
要約すると、Pyramidは、大規模で活発なコミュニティを持つオープンソースのPython Webフレームワークです。 この大規模なコミュニティは、Python Webフレームワークの人気と関連性を高めることに貢献しています。 Pyramid Webフレームワークは、堅牢な機能とツールのセットを提供することにより、Webアプリケーション開発を簡素化および加速します。