目次
- アプリケーション配下にtemplatesフォルダを作る
- アプリケーションを追加したときに、またtemplatesフォルダを作るか悩む…
- プロジェクト配下にすべてのアプリケーションのtemplatesフォルダをまとめたものを作れば解決
- プロジェクト配下にtemplatesフォルダを作成する
- setting.pyの設定を変える
- 余談
DjangoはPythonのWebアプリケーションフレームワークです。いろいろできるので一番人気かな?他にもflaskがありますね。
Django(ジャンゴ)は、Pythonで実装されたWebアプリケーションフレームワーク。(中略)Django の第一の目的は、複雑なデータベース主体の Web サイトの構築を簡単にすることである。Django はコンポーネントの再利用性と'pluggability'、素早い開発、DRY (Don't Repeat Yourself)の原則に力点を置いている。ファイルやデータのモデルにいたるまで、Python が一貫して用いられている。
アプリケーション配下にtemplatesフォルダを作る
Djangoでは、htmlファイルが入っているtemplatesフォルダを各アプリケーションの下に配置することがあるかと思います。
例では「groups」アプリケーションの配下でtemplatesを使っています。(わかりやすくするために、必要ではないディレクトリは大幅に削除しています。
. ├── README.md ├── config │ └── 略 ├── db.sqlite3 ├── groups │ ├── __init__.py │ ├── admin.py │ ├── apps.py │ ├── forms.py │ ├── migrations │ │ ├── 0001_initial.py │ ├── models.py │ ├── tests.py │ ├── templates │ │ ├── base.html │ │ └── groups │ │ ├── detail.html │ │ ├── index_page.html │ │ ├── list.html │ │ └── regist.html │ ├── urls.py │ └── views.py
アプリケーションを追加したときに、またtemplatesフォルダを作るか悩む…
自分の場合は「groups」アプリケーションの他にログイン機能を使う「accounts」アプリケーションを開発途中で追加しました。このタイミングで再びtemplatesフォルダを「accounts」アプリケーションの配下に作るのが嫌でした。
. ├── README.md ├── accounts │ ├── __init__.py │ ├── admin.py │ ├── apps.py │ ├── migrations │ │ └── __init__.py │ ├── models.py │ ├── tests.py │ ├── urls.py │ └── views.py ├── config │ └── 略 ├── db.sqlite3 ├── groups │ ├── __init__.py │ ├── admin.py │ ├── apps.py │ ├── forms.py │ ├── migrations │ │ ├── 0001_initial.py │ ├── models.py │ ├── tests.py │ ├── templates │ │ ├── base.html │ │ └── groups │ │ ├── detail.html │ │ ├── index_page.html │ │ ├── list.html │ │ └── regist.html │ ├── urls.py │ └── views.py
プロジェクト配下にすべてのアプリケーションのtemplatesフォルダをまとめたものを作れば解決
プロジェクト配下にtemplatesフォルダを作成する
なので、プロジェクト配下にtemplatesフォルダを作成し、 「base.html」を共通化し、さらに各アプリケーションごとのフォルダを作ってオリジナリティーのある画面を作っていきます。加えて、setting.pyの中も書き換えます。このプロジェクト配下のtemplatesフォルダを見てくれよーって設定にします。
. ├── README.md ├── accounts │ ├── __init__.py │ ├── admin.py │ ├── apps.py │ ├── migrations │ │ └── __init__.py │ ├── models.py │ ├── tests.py │ ├── urls.py │ └── views.py ├── config │ └── 略 ├── db.sqlite3 ├── groups │ ├── __init__.py │ ├── admin.py │ ├── apps.py │ ├── forms.py │ ├── migrations │ │ ├── 0001_initial.py │ ├── models.py │ ├── tests.py │ ├── urls.py │ └── views.py └── templates ├── base.html ├── groups │ ├── detail.html │ ├── index_page.html │ ├── list.html │ └── regist.html └── registration └── login.html
setting.pyの設定を変える
setting.pyのTEMPLATESの項を探してください。
TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', # 'DIRS': [], ここを 'DIRS': [os.path.join(BASE_DIR, 'templates')], # こうする 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', ], }, }, ]
以上で、Djangoのtemplatesを一つにまとめることができます。 お疲れ様でした。
余談
各アプリケーションの配下にtemplatesフォルダを作成するのにも利点があります。 対象のアプリケーションを別のプロジェクトで使いたいときです。 ときに意識せず、そのままコピーしていけます。