1/99スタックエンジニアの適当記録

適当なことを書きます。関西で転職したいです。

djangoのtemplateについて

djangoのtemplateについてまとめます。

templateとは

djangoでは当然htmlやcssを扱えます。
htmlやcssはviewの内部に記述して使うこともできますが、
ソースがややこしくなるため、templateで切り出すことが一般的です。

ここにtemplate機能についての公式ドキュメントがあります。
docs.djangoproject.com

templateの定義について

template機能はstartprojectした時点でデフォルトで基本設定はされるので、あまり意識しなくても利用できますが、templateの利用にはsettings.pyの設定が必要です。
デフォルト状態でのtemplate機能の設定はsetting.pyに下記のように記述されています。

settings.py

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [],
        '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',
            ],
        },
    },
]

settings.pyに設定されているTEMPLATESの意味について

TEMPLATESのそれぞれの属性の意味についてです。

1つ目の「BACKEND」はテンプレートのクラスへのパスです。これは、基本固定で触ることはないかと思います。
実際にコードを見たければ、djangoのパスを調べて辿っていきます。
djangoまでの調べ方はここに書いてあります。
roku28632.hatenablog.com
さらに辿っていくとdjango.pyのDjangoTemplatesクラスが見つかると思います。

2つ目の「DIRS」はテンプレートのソースファイルの位置を検索順に定義します。
一般的なDIRSの例です。

'DIRS': [
    os.path.join(BASE_DIR, 'templates'),
],

BASE_DIRの意味についてを下記に記載しておきますが、BASE_DIRは「プロジェクトのベースディリクトリ」を取得できるので、os.path.joinでtemplatesと結合することで、プロジェクトのベースディレクトリにあるtemplatesディレクトリをテンプレートファイルを格納するディレクトリとして認識させています。
roku28632.hatenablog.com

3つ目の「APP_DIRS」はTrueかFalseを指定します。Trueを指定していれば、アプリケーション内のテンプレートも検索するようになります。

4つ目の「OPTIONS」はオプションを設定します。よほど複雑なことをしない限り触る必要はないでしょう。

チュートリアルを回す程度であれば、全く触る必要はありませんが、フォルダ等をカスタマイズする際に利用できるように覚えておく必須の知識になるかと思います。

以上です。