PasteScriptベースのプロジェクトテンプレート

プロジェクト数の増加に伴い、新しいアプリケーション用のフレームワークの作成を自動化するという問題が発生しました。 最近まで、準備されたテンプレートプロジェクトをコピーし、プロジェクトのさまざまな場所でさまざまな設定を変更して、新しいプロジェクトを作成しました。 もちろん、これは多くの時間を殺しました。

この問題を解決する試みは、 Python Pasteというプロジェクトにつながりました。 一般的に、これはWebアプリケーションを作成するためのユーティリティのセットです。たとえば、独自のフレームワークを作成できます( Pylonsで使用します)。 Pythonの貼り付けには、Webユーティリティに加えて、貼り付けスクリプトモジュールも含まれています。このモジュールを使用して、スタブテンプレートを作成し、それに基づいてプロジェクトを生成できます。

どのように機能しますか?



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' 、
「名前」 : 「$(データベース)」 、
}
}
...

また、テンプレートファイルに関する注意事項:

おわりに


以上です。 python setup.py installテンプレートを使用してパッケージをpython setup.py installする

paster create --list-templatesして、システム内のテンプレートのリストを確認します(理解する限り、entry_pointsで説明されたテンプレートプラグインのeggのシステムにインストールされたスキャンを使用してテンプレートが検索されます)。

paster create --template=simple SimpleProject使用して、単純なテンプレートに基づいて新しいプロジェクトを作成します。

すべての機会にテンプレートを作成することは残っています。

GitHubプロジェクトのソース

参照:

Source: https://habr.com/ru/post/J125353/


All Articles