序章


Webフレームワークは、Webアプリケーションをジャンプスタートするための迅速で簡単な方法を提供します。 ほとんどすべてのWebフレームワークは、MVCソフトウェアパターンに準拠しています。 MVCは、モデル、ビュー、およびコントローラーの略です。 これは、アプリケーションのさまざまな機能を区別および分離して、その設計を簡素化し、各部分を他のコンポーネントから独立して変更できるようにする方法です。

Pyramidは、Pythonアプリケーション用の軽量Webフレームワークです。 これにより、基本的なWebアプリケーションをすばやく起動して実行できます。 実際、必要に応じて、フレームワークレイアウト全体を1つのファイルに作成できます。

このガイドでは、UbuntuシステムでPyramidをセットアップする方法を紹介します。 次に、このフレームワークを使用してアプリケーションを正常に起動できるようにする基本的なコマンドとプロセスについて説明します。

前提条件のツールをインストールする


始める前に、いくつかの前提条件パッケージをインストールしておく必要があります。 PyramidはPythonフレームワークであるため、アプリケーションが実行していたバージョンのPythonが必要になります。

このガイドではPython3を使用します。 インストールしたUbuntuのバージョンによっては、これがデフォルトで含まれている場合があります。

いずれにせよ、次のコマンドを実行して、一部のPyramid拡張機能に必要な開発ヘッダーファイルをインストールする必要があります。 Python 3がインストールされていない場合、これは依存関係として取り込まれます。 さらに、setuptoolsパッケージをダウンロードします。

sudo apt-get update
sudo apt-get install python3-dev python3-setuptools

virtualenvパッケージも必要になります。 これは、easy_installコマンドを使用して実行できます。

sudo easy_install virtualenv

これで、Pyramidの操作を開始するために必要な基本コンポーネントが揃いました。

アプリケーション環境を構成する


必要なPythonバージョンと、アプリケーションのビルドに必要なブートストラップツールが揃ったので、アプリケーション環境を構成できます。

virtualenvパッケージを使用すると、分離されたPython環境をセットアップできます。 最初にこれを設定してから、この環境内にPyramidファイルをインストールします。

まず、ホームディレクトリに移動します。 ここから、プロジェクトファイルを格納するディレクトリを作成します。

cd ~
mkdir pyramid_sites
cd pyramid_sites

このディレクトリ内に、仮想環境を作成します。 これにより、システムのツールに影響を与えることなくPythonツールとライブラリをインストールできる孤立したバブルが作成されます。

virtualenv --no-site-packages env

これにより、現在のフォルダに「env」というディレクトリが作成されます。 これは、環境ファイルがインストールされる場所です。

次のコマンドを使用して、仮想環境をアクティブ化し、インストールコンテキストを変更できます。

source env/bin/activate

これにより、プロンプトが変更され、仮想環境が含まれるようになります。 これにより、仮想環境にいるかどうかを簡単に知ることができます。 後で環境を非アクティブ化する必要がある場合は、次のように入力できます。

deactivate

ただし、まだ環境を非アクティブ化しないでください。 次のように入力して、仮想環境にPyramidをインストールできます。

easy_install pyramid

これにより、フレームワークに必要なすべてのファイルがインストールされます。

サンプルアプリケーションを設定する


Pyramidフレームワークの利点の1つは、非常に軽量にできることです。 Webフレームワークは、単一のファイル内に実装できます。

1つのファイル構成の内訳


Pyramidプロジェクトの例を使用して、1つのファイル構成を作成できます。 これは単純な「helloworld」アプリケーションになります。 主に、一般的な構成ファイルのいくつかの異なる部分を表示するために使用します。

まず、アプリケーションのディレクトリを作成します。

mkdir ~/pyramid_sites/hello_world
cd ~/pyramid_sites/hello_world

内部で、application.pyファイルを作成し、次の内容を入力できます。

nano application.py

from wsgiref.simple_server import make_server
from pyramid.config import Configurator
from pyramid.response import Response

def hello_world(request):
    return Response('<h1>Hello world!</h1>')

if __name__ == '__main__':
    config = Configurator()
    config.add_view(hello_world)
    app = config.make_wsgi_app()
    server = make_server('0.0.0.0', 8080, app)
    server.serve_forever()

このファイルをチャンクで調べて、Pyramidがどのように機能するかを確認しましょう。

ファイルの先頭には、importステートメントがあります。

from wsgiref.simple_server import make_server
from pyramid.config import Configurator
from pyramid.response import Response

最初の行はmake_server関数をインポートします。この関数は、アプリケーションが渡されたときに単純なWebサーバーを作成できます。 2行目と3行目は、PyramidからConfiguratorおよびResponse関数をインポートします。

これらの関数は、アプリケーションの詳細を構成し、パラメーターを設定し、要求に応答するためにそれぞれ使用されます。

次に、hello_worldという関数定義があります。

def hello_world(request):
    return Response('<h1>Hello world!</h1>')

この関数は、アプリケーションの「ビュー」を表します。 ほとんどのWebフレームワークは、MVC(モデル、ビュー、コントローラー)パラダイムを実装していることを忘れないでください。 ビューの要件を満たす関数は、要求元のエンティティに返されるテキストをレンダリングする役割を果たします。

この場合、関数が呼び出されると、前にインポートしたResponse関数が使用されます。 これにより、クライアントに提供する必要のある値が返されます。 私たちのシンプルなアプリでは、これは非常に簡単なビューの実装です。

プログラムの主要部分は次に起こります。 これは、プログラムのメインの実行可能部分を呼び出すための一般的なPython規則から始まります。

if __name__ == '__main__':

この行は、ファイルが実行中の「メイン」ファイルである場合(つまり、ファイルがインポートされて別のファイルによって呼び出されていない場合)、次のコマンドを実行する必要があることを指定します。

    config = Configurator()
    config.add_view(hello_world)
    app = config.make_wsgi_app()
    server = make_server('0.0.0.0', 8080, app)
    server.serve_forever()

ここの最初の行は、プログラムの先頭にインポートしたConfigurator関数によって作成されたオブジェクトから、configという変数を作成します。

次の行は、このオブジェクトのadd_viewメソッドを呼び出します。 このメソッドは、アプリケーションで使用できるビューを定義するために使用されます。 ご覧のとおり、前に定義したhello_world関数を渡します。 これは、その関数が実際にビューとして組み込まれる場所です。

次の行は、configオブジェクトのmake_wsgi_appメソッドを呼び出して、実際にWSGIアプリケーションを作成します。 これは、追加したビューなどのオブジェクトの属性を使用して、アプリケーションを作成します。

次に、このアプリケーションは、インポートしたmake_server関数に渡され、アプリケーションを提供するWebサーバーを起動できるオブジェクトが作成されます。 最後の行でこのサーバーを起動します。

終了したら、ファイルを保存して閉じます。

アプリケーションを起動するには、Pythonをそのアプリケーションに向けるだけです。

python application.py

ここで、構成で定義したポート( ‘8080’)に移動すると、ビュー機能に入力したテキストが表示されます。

http:// your_ip_address :8080

DigitalOcean Pyramid hello world

足場を使用してサンプルピラミッドアプリケーションを作成する


前の例では、すべてを1つのファイルで実行しました。 これは、Pyramidを使用してMVCアプリケーションを作成するプロセスがいかにコンパクトでシンプルであるかを示す良い方法ですが、物事を進めるための最も簡単な方法であるとは限りません。

最も一般的なフレームワークと同様に、Pyramidは「足場」を使用して、複雑なプロジェクトディレクトリ構造をすばやく作成できます。 pcreateというツールを使用してスキャフォールディングを使用できます。

Pyramidディレクトリに戻り、使用可能なスキャフォールディングを確認します。

cd ~/pyramid_sites
pcreate -l

Available scaffolds:
  alchemy:  Pyramid SQLAlchemy project using url dispatch
  starter:  Pyramid starter project
  zodb:     Pyramid ZODB project using traversal

最初のオプションは、SQL統合を使用してプロジェクトを作成します。 2つ目は、アプリケーションインスタンス間の永続性のない基本的なプロジェクトを作成します。 3つ目は、Python 2を使用している場合に、ZODBで実行するアプリケーションを作成できます。

テンプレートを選択してプロジェクトに名前を付けることで、スキャフォールドプロジェクトを作成できます。

pcreate -s starter first_project

これにより、プロジェクトにちなんで名付けられたディレクトリが作成されます。内部に移動して、作成されたファイルを確認してください。

cd first_project
ls

CHANGES.txt  development.ini  first_project  MANIFEST.in  production.ini  README.txt  setup.cfg  setup.py

これは、最後の例よりもはるかに大きなファイルのセットです。 このフォルダに直接あるファイルは、主に構成に使用されます。 プログラム自体は、主にプロジェクト名のサブフォルダー内に含まれています。

スキャフォールディングが何を達成したかを確認するには、セットアップスクリプトを実行して、開発環境用にアプリケーションを構成します。

python setup.py develop

これにより、development.iniファイル内で使用可能なパラメーターを使用してアプリケーションを構成することができます。

その後、次のように入力してプロジェクトを提供できます。

pserve development.ini

IPアドレスに続いてコマンドラインで指定されたポート番号(「6543」である必要があります)にアクセスすると、デフォルトのアプリケーションが表示されます。

DigitalOcean Pyramid scaffolding site

ターミナルで「Ctrl-C」を押して、Webサーバーを停止します。

構成ファイル内でデバッグパネルを有効にして、アプリケーションに関する貴重な情報を取得できるようにすることができます。

development.iniファイルを編集します。

nano development.ini

内部の[app:main]セクションの下部に次の行を追加して、接続しているすべてのホストがデバッグツールバーを表示できるようにします。

[app:main]。 . . . . 。  pyramid.includes = pyramid_debugtoolbar debugtoolbar.hosts = 0.0.0.0/0

ファイルを保存して閉じます。 ここで、サーバーを再起動してWebページをリロードすると、右側にデバッグツールバーが表示されます。

pserve development.ini

DigitalOcean Pyramid debug toolbar

このプロジェクトの構造内で、複雑なMVCインタラクションを構成できます。

結論


Pyramidでできることの表面をかじったところです。 うまくいけば、この時点で、Pythonの規則に基づいて構築された単純な構造を持ち、非常に簡単なサイトから複雑な相互作用を必要とするより完全な設計に拡張するのに十分な柔軟性があることがわかります。

より大きなアプリケーションを実装する方法をよりよく理解するために、Pyramidのドキュメントを調べてください。 フレームワークは、アプリケーションを開発サイクル(組み込まれたテストを含む)から本番環境に移行するための多くのツールを提供します。

ジャスティン・エリングウッド