(機械翻訳) ピラミッド足場の作成¶
バージョン 1.8 で撤廃: Scaffoldsと、 `` pcreate``スクリプトは、足場からapp: `Pyramid`プロジェクトを生成するのに使用されていました。代わりに:ref: `cookiecutters`を使用してください。
Pyramidを拡張するには:term: scaffold`テンプレートを作成します。 Scaffoldテンプレートは、Pyramidのカスタマイズ可能な設定を他のユーザに配布したい場合に便利です。足場を作成し、誰かが足場を格納しているディストリビューションをインストールしたら、 ` pcreate``スクリプトを使ってあなたの足場のテンプレートのカスタム版を作成できます。ピラミッド自体は足場を使って人々が新しいプロジェクトをブートストラップすることを可能にします。例えば、 `` pcreate -s alchemy MyStuff``は、 `` alchemy``スカホールドテンプレートを `` MyStuff``ディレクトリに描画します。
基本¶
足場テンプレートは、ディスク上のソースファイルとディレクトリの束です。小さな定義クラスはこのディレクトリを指します。これは、 `` setuptools`` "エントリーポイント"によって指示されます。これは足場を登録して `` pcreate``コマンドで見つけることができます。
足場テンプレートを作成するには、 `` setuptools``パッケージに依存する `` setup.py``を含む足場を格納するPython:term: distribution`を作成します。 `プロジェクトのパッケージングと配布<https://packaging.python.org/tutorials/distributing-packages/> `_これを行う方法の詳細については_を参照してください。たとえば、作成したディストリビューションの名前は ` CoolExtension``で、パッケージディレクトリは `` coolextension``という名前です。
ディストリビューションを作成したら、ディストリビューションのパッケージディレクトリに"scaffolds "ディレクトリを置いて、そのディレクトリ内に `` __init __。py``という名前のファイルを次のように作成します:
1 2 3 4 5 6 7 | # CoolExtension/coolextension/scaffolds/__init__.py
from pyramid.scaffolds import PyramidTemplate
class CoolExtensionTemplate(PyramidTemplate):
_template_dir = 'coolextension_scaffold'
summary = 'My cool extension'
|
これが完了したら、 `` scaffolds``ディレクトリ内にテンプレートディレクトリを作成します。この例では、 `` coolextension_scaffold``というテンプレートディレクトリを使用しました。
テンプレートディレクトリ内にファイルとディレクトリを作成するときは、次の点に注意してください。
- 末尾に `` _tmpl``という名前のファイルがレンダリングされ、リテラル文字列 `` {{var}} ``のインスタンスが `` var``という名前の変数の文字列値に置き換えられます足場に提供される。
- 文字列 `` + var + ``を含むファイル名とディレクトリ名は、その文字列を足場に与えられた `` var``変数の値で置き換えます。
- ドットで始まるファイル(例: `` .env``)は無視され、コピー先のディレクトリにコピーされません。先頭にドットを含むファイルをインクルードする場合は、ドットを `` +ドット+
(例えば `` + dot + env
)に置き換える必要があります。
それ以外の場合は、テンプレートディレクトリにあるファイルとディレクトリはそのまま出力先の `` pcreate``にコピーされます。
デフォルトの `` PyramidTemplate``が提供する変数には、 `` project``(ユーザが `` pcreate``の引数として提供するプロジェクト名)、 `` package``(プロジェクト名の小文字化と正規化`` random_string``(長いランダムな文字列)、 `` package_logger``(パッケージのロガーの名前)のうちの1つです。
scaffoldディレクトリ( `` zodb``、 `` alchemy``、 `` alchemy``)の具体的な例については、Pyramidの"scaffolds "パッケージ(https://github.com/Pylons/pyramid/tree/master/pyramid/scaffolds) `` starter``など)。
テンプレートディレクトリを作成したら、あなたのディストリビューションの `` setup.py``の `` entry_points``値に以下を追加してください:
[pyramid.scaffold]
coolextension=coolextension.scaffolds:CoolExtensionTemplate
例えば:
def setup(
...,
entry_points = """\
[pyramid.scaffold]
coolextension=coolextension.scaffolds:CoolExtensionTemplate
"""
)
あなたのディストリビューションの `` setup.py development`や `` setup.py install``コマンドを実行してください。その後、 `` pcreate -l``を実行したときに表示される足場テンプレートを見ることができます。これはエントリポイントの設定で与えた名前なので、「coolextension」という名前になります。 `` pcreate -s coolextension MyStuff``を実行すると、足場を `` MyStuff``という出力ディレクトリにレンダリングします。
:class: pyramid.scaffolds.Template`クラスと関連クラスのAPIについては、mod: pyramid.scaffolds`のモジュールドキュメントを参照してください。このクラスのメソッドをオーバーライドして特別な動作を得ることができます。
古いピラミッドバージョンをサポートする¶
さまざまなバージョンのPyramidが足場を別々に扱っていたため、Pyramid 1.0.X、1.1.X、1.2.X、1.3.Xで機能する拡張スカフォールドを使用するには、このホラービットを使用する必要があります。足場テンプレートを定義する:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | try: # pyramid 1.0.X
# "pyramid.paster.paste_script..." doesn't exist past 1.0.X
from pyramid.paster import paste_script_template_renderer
from pyramid.paster import PyramidTemplate
except ImportError:
try: # pyramid 1.1.X, 1.2.X
# trying to import "paste_script_template_renderer" fails on 1.3.X
from pyramid.scaffolds import paste_script_template_renderer
from pyramid.scaffolds import PyramidTemplate
except ImportError: # pyramid >=1.3a2
paste_script_template_renderer = None
from pyramid.scaffolds import PyramidTemplate
class CoolExtensionTemplate(PyramidTemplate):
_template_dir = 'coolextension_scaffold'
summary = 'My cool extension'
template_renderer = staticmethod(paste_script_template_renderer)
|
そして、足場が入っているパッケージのsetup.pyで、テンプレートを `` paste.paster_create_template``( `` paster create``用)と `` pyramid.scaffold``( ` `` pcreate``)。
[paste.paster_create_template]
coolextension=coolextension.scaffolds:CoolExtensionTemplate
[pyramid.scaffold]
coolextension=coolextension.scaffolds:CoolExtensionTemplate
この恐ろしさを実行することで、あなたの足場が「ペースト作成」ターゲット(1.0,1.1、または1.2)または「pcreate」ターゲット(1.3以下)として機能するようになります。呼び出し側が1.3でこのように定義された足場に対して `` paster create``を実行しようとすると、代わりに `` pcreate``を使うように指示するエラーが発生します。
Pyramid 1.3のみをサポートしたい場合は、よりクリーンでAPIが安定しています:
1 2 3 4 5 | from pyramid.scaffolds import PyramidTemplate
class CoolExtensionTemplate(PyramidTemplate):
_template_dir = 'coolextension_scaffold'
summary = 'My cool_extension'
|
Pyramid 1.0,1.1、または1.2のユーザが足場を消耗させたい場合は、 `` setup.py``に `` paste.paster_create_template``エントリーポイントターゲットを指定する必要があります。 1.3のみをサポートするには、 `` pyramid.scaffold``エントリポイントだけを指定すれば十分です。 `` paster create``と `` pcreate``(Pyramid 1.2と古いバージョンをサポートしたいという意味)の両方をサポートしたい場合、両方を定義する必要があります。
例¶
スキャフォールディングを格納している既存のサードパーティのディストリビューションは:term: PyPI`で利用可能です。 ` pyramid_jqm``、 `` pyramid_zcml``、 `` pyramid_jinja2``パッケージには足場があります。これらのパッケージをインストールして調べることで、独自の足場を開発するためにどのように動作するかを確認することができます。