Djangoのテンプレートファイル配置先ディレクトの設定
Djangoで、Viewで処理した内容を表示する画面を作成するのがテンプレート。
テンプレートのファイルの配置先は、以前の記事でも記載したsettings.pyの、TEMPLATES変数に設定する。
以下のようにsettings.pyのBASE_DIRに合わせて記載することで、プロジェクトのフォルダ、アプリケーションのフォルダと同じディレクトリ上にテンプレートを設定することができる。
Example
- settings.pyでテンプレートフォルダの配置先を設定する
import os # osモジュールのインポート
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) # BASE_DIRはprojectを作成したディレクトリ(manage.pyのあるディレクトリ)
TEMPLATE_DIR = os.path.join(BASE_DIR,'templates') # TEMPLATE_DIRはBASE_DIR/templatesフォルダ内を表示する
次に、TEMPLATE_DIRを設定したら、TEMPLATES変数に記入する
- TEMPLATES変数に指定する
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [TEMPLATE_DIR,], # TEMPLATE_DIR設定
'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',
],
},
},
]
後は、実際にBASE_DIR(プロジェクトのベースディレクトリ)直下にtemplatesディレクトリを作成して、中にhtmlファイルなどを入れていくと、ビューのrender('〇〇.html')で各templatesに配置したファイルを読み込むことができるようになる
Example
- 上記設定をした場合のフォルダ構成(プロジェクトとアプリケーションと同じ階層にtemplatesフォルダを置く)
- views.pyにtemplatesを読み込むhtmlを指定する
return render(request, 'index.html') # templatesフォルダ内のindex.htmlを読み込む
def index2(request):
return render(request, 'app/index.html') # templatesフォルダ内のappフォルダ内のindex.htmlを読み込む