イントロダクションとアプリケーションの作成

例を使って理解する

このガイドの中の例は、 (A) Pyramid 1.3 のデフォルト SQLAlchemy アプリケーションと (B) Akhet デモに基づいています (Akhet は、 Pyramid のためのいくつかの Pylons 風のサポート機能を含む アドオンパッケージです)。 これは、それらのアプリケーションを Linux Ubuntu 11.10 にインストールして 起動するための基本的な手順です。しかし、その前に Pyramid manualCreating a Pyramid Project を読んでください:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# Prepare virtual Python environment.

$ cd ~/workspace
$ virtualenv myvenv
$ source myvenv/bin/activate
(myvenv)$ pip install 'Pyramid>=1.3'

# Create a Pyramid "alchemy" application and run it.

(myvenv)$ pcreate -s alchemy PyramidApp
(myvenv)$ cd PyramidApp
(myvenv)$ pip install -e .
(myvenv)$ initialize_PyramidApp_db development.ini
(myvenv)$ pserve development.ini
Starting server in PID 3871.
serving on http://0.0.0.0:6543

# Press ctrl-C to quit server

# Check out the Akhet demo and run it.

(myvenv)$ git clone git://github.com/mikeorr/akhet_demo
(myvenv)$ cd akhet_demo
(myvenv)$ pip install -e .
(myvenv)$ pserve development.ini
Starting server in PID 3871.
serving on http://0.0.0.0:6543

# Check out the Pyramid source and Akhet source to study.

(myvenv)$ git clone git://github.com/pylons/pyramid
(myvenv)$ git clone git://github.com/pylons/akhet

(myvenv)$ ls -F
akhet/
akhet_demo/
PyramidApp/
pyramid/
myvenv/

探すもの: ページの右上の「DT」アイコンは、デバッグツールバーです。 それは Pylons にはありませんでした。 “「populate_PyramidApp” スクリプト (13行目) はデータベースを作成します。このステップをスキップすると、ホームページに 関する例外を得るでしょう; Pyramid のインタラクティブトレースバックを見るために 「うっかり」これをすることができます。

p* コマンド

Pylons は、アプリケーションを作成したり起動したりするためにサードパーティ のユーティリティ paster を使用します。 Pyramid は、これらのサブコマンドを “p” で始まる一連のトップレベルのコマンドに置き換えます:

Pylons Pyramid Description Caveats
paster create pcreate Create an app Option -s instead of -t
paster serve pserve Run app based on INI file -
paster shell pshell Load app in Python shell Fewer vars initialized
paster setup-app populate_App Initialize database “App” is application name
paster routes proutes List routes -
- ptweens List tweens -
- pviews List views -

多くの場合で、コードは同じです。単に Pyramid にコピーされて、Python 3 対応されました。 Paste は Python 3 に移植されておらず、 Pyramid 開発者は、 移植するにはレガシーコードがあまりに多く含まれると決定しました。そのため、 彼らは必要な部分だけを移植しました。しかし、次の章で見るように PasteDeploy は Python 3 に 移植済み で、Pyramid はそれを使用している ということに注意してください。同様に、Paste から早期にスピンアウトした – WebOb のような – 他のいくつかのパッケージも Python 3 に移植されて、 Pyramid でもそれらを使用しています (それらは、たいてい Pyramid 開発者に よって移植されました) 。

Scaffold

Pylons には、どんな種類のアプリケーションを作成したいかという質問を尋ねる 1 種類の paster テンプレートがあります。 Pyramid は質問をしませんが、 その代り、選択することのできるいくつかの scaffold を提供します。 Pyramid 1.3 は次の scaffold を含んでいます:

Routing mechanism Database Pyramid scaffold
URL dispatch SQLAlchemy alchemy
URL dispatch - starter
Traversal ZODB zodb

最初の 2 つの scaffold は URL ディスパッチを使用するので Pylons に近いです。 URL ディスパッチは Routes に似ています。これら 2 つの scaffold の 唯一の違いは SQLAlchemy データベースが自動的に構成されるかどうかです。 3 番目の scaffold は Pyramid の他のルーティングメカニズム、トラバーサル を使用します。このガイドの中ではトラバーサルをカバーしませんが、 それは URL を任意の深さに作成することが可能なアプリケーションに便利です。 URL ディスパッチは、固定の深さの URL 階層を持つアプリケーションにより適して います。他にどんな種類の Pyramid アプリケーションが可能かを確かめるために Kotti と Ptah ディストリビューションを見てください。Kotti はコンテンツ 管理システムで、 SQLAlchemy を使用したトラバーサルの例として役立ちます。

ディレクトリレイアウト

デフォルト ‘alchemy’ アプリケーションを作成してインストールすると、 以下のファイルが含まれています:

PyramidApp
├── CHANGES.txt
├── MANIFEST.in
├── README.txt
├── development.ini
├── production.ini
├── setup.cfg
├── setup.py
├── pyramidapp
│   ├── __init__.py
│   ├── models.py
│   ├── scripts
│   │   ├── __init__.py
│   │   └── populate.py
│   ├── static
│   │   ├── favicon.ico
│   │   ├── pylons.css
│   │   ├── pyramid.png
│   ├── templates
│   │   └── mytemplate.pt
│   ├── tests.py
│   └── views.py
└── PyramidApp.egg-info
    ├── PKG-INFO
    ├── SOURCES.txt
    ├── dependency_links.txt
    ├── entry_points.txt
    ├── not-zip-safe
    ├── requires.txt
    └── top_level.txt

(いくつかの静的ファイルを省略しました) 見て分かる通り、ディレクトリ構造 は Pylons に似ていますが同一ではありません。