Django

【Django】Templatesの置き場所

DjangoでTemplatesの置き場所のメモ書き。

Templatesを設置する場所は大きく分けて2つある。

  1. アプリ内に設置
  2. プロジェクト直下に設置 ←おすすめ!

上記2つの設置方法について説明する。

【Python×Django×Docker×VScode】WEBアプリ作成フロー 1.コンテナ立ち上げ用ファイルを編集 前提 今回はVScodeのRemote-Containersの機能とDockerを使...

アプリ内に設置する場合

各アプリのディレクトリ直下に設置するだけで良い。
Djangoとしてはこちらの方法がデフォルトになっている。

フォルダ構成
sample_project
    │  db.sqlite3
    │  manage.py
    │
    ├─app1
    │  │  __init__.py
    │  │==省略==
    │  │
    │  ├─templates
    │  │  │base2.html
    │  │  │ index.html
    │  │
    │  └─migrations
    │       │ 0001_initial.py
    │       │ __init__.py
    │
    ├─config
    │  │  __init__.py
    │  │==省略==
    │
    └─app2
         │  __init__.py
         │==省略==
         │
         ├─templates
         │  │ base.html
         │  │ home.html
         │
         └─migrations
              │  0001_initial.py
              │  __init__.py

プロジェクト直下に設置する場合

すべてのhtmlをプロジェクト直下にまとめて配置する方法。

フォルダ構成
sample_project
    │  db.sqlite3
    │  manage.py
    │
    ├─app1
    │  │  __init__.py
    │  │==省略==
    │  │
    │  └─migrations
    │       │ 0001_initial.py
    │       │ __init__.py
    │
    ├─config
    │  │  __init__.py
    │  │==省略==
    │
    └─app2
    │  │  __init__.py
    │  │==省略==
    │  │
    │  └─migrations
    │       │ 0001_initial.py
    │       │ __init__.py
    │
    └─templates
         │ base.html
         │ home.html


この場合、プロジェクトを作成したときに自動で作られる
setting.pyも編集する必要がある。

★setting.py の import os と TEMPLATESのDIRSの中身 を変更する。

from pathlib import Path
import os #ここを追加

====略====

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')], #ここを追加
        'APP_DIRS': True,
   ====略====
    },
]