[Django] プロジェクトの作成にカスタムテンプレートを利用する

Djangoでいくつかプロジェクトを作っていると大体、自分なりのプロジェクトの雛形っていうのができてくると思います。

毎回、デフォルトのテンプレートから作成するのは面倒です。

そこで、プロジェクトを作成する時のstartprojectやアプリケーションを追加するときのstartappで生成されるテンプレートをカスタマイズしてみようというお話です。

カスタムテンプレートを作成する

カスタムテンプレートの実態は普段のDjangoのテンプレートと同じです。
なので、Djangoテンプレートの文法を利用してpythonのプログラムを記述することになります。

カスタムテンプレートの拡張子は.py-tplです。

テンプレート内で利用できる変数名は、

プロジェクトなら

project_name
project_directory
camel_case_project_name

アプリケーションなら

app_name
app_directory
camel_case_app_name

です。

どちらでも共通して使えるのは、

docs_version
django_version

に加えて、コマンドの引数に渡したオプションです。

こんな感じで追加してみました。

app_template
    ├── __init__.py-tpl
    ├── admin.py-tpl
    ├── apps.py-tpl
    ├── forms.py-tpl
    ├── migrations
    │   └── __init__.py-tpl
    ├── models.py-tpl
    ├── tests.py-tpl
    ├── urls.py-tpl
    └── views.py-tpl

カスタムテンプレートを利用する

早速先ほど作ったテンプレートを利用してプロジェクトを作成してみます。

startappコマンドの引数に--templateオプションを付与します。
--templateオプションの引数にはカスタマイズしたテンプレートがあるディレクトリへのパスを指定します。

python manage.py startapp --template path/to/templates

これで毎回の面倒な作業から少し解放されます。