プロジェクト数の増加に伴い、新しいアプリケーション用のフレームワークの作成を自動化するという問題が発生しました。 最近まで、準備されたテンプレートプロジェクトをコピーし、プロジェクトのさまざまな場所でさまざまな設定を変更して、新しいプロジェクトを作成しました。 もちろん、これは多くの時間を殺しました。
この問題を解決する試みは、
Python Pasteというプロジェクトにつながりました。 一般的に、これはWebアプリケーションを作成するためのユーティリティのセットです。たとえば、独自のフレームワークを作成できます(
Pylonsで使用します)。 Pythonの貼り付けには、Webユーティリティに加えて、貼り付けスクリプトモジュールも含まれています。このモジュールを使用して、スタブテンプレートを作成し、それに基づいてプロジェクトを生成できます。
どのように機能しますか?
- 空白を含むプロジェクトを作成し、空白を使用してカタログへのパスを指定し、他の設定を行います。
- テンプレートディレクトリで、ファイルとディレクトリ名がCheetahテンプレートを介して渡されることを考慮して、ファイル構造を作成します(プロジェクト名や自分で設定した他のファイルなど、ファイル内でさまざまな変数を使用できます)。
- 空白を含むプロジェクトをインストールします。
- 生成チームは、テンプレートに基づいて新しいプロジェクトを作成します。 生成の前に、テンプレート設定で指定されたプロジェクト名とさまざまなパラメーターを尋ねます
Djangoのプロジェクト用のシンプルなテンプレートを作成する
PasteScript
pip install PasteScript
をインストールします
およそ次のプロジェクト構造を作成します。
次に、テンプレートの場所とそれらの設定を決定します。
setuptools import setup から 、find_packages
セットアップ(
name = 'paster-templates' 、
バージョン= "0.1" 、
パッケージ= find_packages ( ) 、
install_requires = [
'setuptools' 、
'PasteScript' 、
「チーター」 、
] 、
include_package_data = True 、
zip_safe = False 、
#ここでパターンを説明します
entry_points = "" "
[paste.paster_create_template]
simple = templates.pastertemplates:SimpleTemplate
「」「
)
simpleはテンプレートの名前で、SimpleTemplateは設定を持つクラスです。
SimpleTemplateクラスで、テンプレート自体を構成し、ファイル、簡単な説明、およびユーザーを入力するように要求する「データベース名」パラメーターを使用してディレクトリを指定します。
ペーストから 。 スクリプト 。 テンプレート インポートテンプレート
ペーストから 。 スクリプト 。 テンプレート インポート変数
クラス SimpleTemplate ( Template ) :
_template_dir = 'simple'
要約= 「単純なプロジェクト」
use_cheetah = True
vars = [
var ( 'database' 、
「データベース名」。 、
デフォルト= "test_db" ) 、
]
テンプレート/に移動し、テンプレートとなる新しいdjangoプロジェクト
django-admin.py startproject simple
を生成します。
テンプレートファイルの構成に進みます。 生成時に指定されたパラメーターは、ファイル名に_tmplを追加した後、テンプレートファイル内で使用できます。 これらの変数の形式は
$(property_name)
で、テンプレートエンジンを通過するディレクトリの名前は
+property_name+
です。 たとえば、settings.py_tmplファイルの一部:
...
#プロジェクト名-$(プロジェクト)
データベース= {
'default' : {
'ENGINE' : 'django.db.backends.sqlite3' 、
「名前」 : 「$(データベース)」 、
}
}
...
また、テンプレートファイルに関する注意事項:
- テンプレートをロシア語で記述する場合、ファイルの先頭に
#encoding UTF-8
を挿入します - テンプレートで$記号を使用する必要があり、チーターがそれを
#raw ... $content... #end raw
として受け入れないようにするには、 #raw ... $content... #end raw
ラップする必要があります
おわりに
以上です。
python setup.py install
テンプレートを使用してパッケージを
python setup.py install
する
paster create --list-templates
して、システム内のテンプレートのリストを確認します(理解する限り、entry_pointsで説明されたテンプレートプラグインのeggのシステムにインストールされたスキャンを使用してテンプレートが検索されます)。
paster create --template=simple SimpleProject
使用して、単純なテンプレートに基づいて新しいプロジェクトを作成します。
すべての機会にテンプレートを作成することは残っています。
GitHubプロジェクトのソース
参照: