Python | Django | テンプレートのディレクトリの変更方法

公開日:2021/6/19

Pythonには,DjangoというWebアプリケーションフレームワークがある.フレームワークのため,Djangoを利用するとWebアプリを通常よりも短時間で開発することが可能になる.

前の記事にてDjangoにおけるテンプレート(template)をアプリ内に作成し,基本的な設定方法を記した.本記事では,テンプレートをプロジェクト内に作成し,それに伴うディレクトリの変更方法を以下に記す.

◆実施環境

Python 3.8.8
Django 3.2.3

■テンプレートのディレクトリ変更方法

“tmp_project/settings.py"の以下箇所にコードを追記し,編集する.

from pathlib import Path
import os # 追記箇所

BASE_DIR = Path(__file__).resolve().parent.parent
TMP_DIR = os.path.join(BASE_DIR,'templates') # 追記箇所

また,"tmp_project/settings.py"のTEMPLATESの"[ ]"内に"TMP_DIR"を入れ,以下のように編集する.

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

“tmp_project"の中に"templates"フォルダを作成し,その中に"index.html"を作成する.赤枠が今回作成した"templates"になり,青枠が前回作成した"templates"になる.作成後,以下のような構成になる.

“tmp_project/templates/index.html"に以下コードを記述する.

<html> 
<head> 
<title>This is how to use templates of tmp_project</title> 
</head>
<body> 
<h1>Hello World in templates of tmp_project.</h1> 
</body> 
</html>

“tmp_project/urls.py”は前回編集したので変更することはないが,ブラウザを開く際に"template_app/"が必要なので,現在のコードを以下に記す.

from django.contrib import admin 
from django.urls import path, include 
urlpatterns = [ 
  path('admin/', admin.site.urls),
  path('template_app/',include('tmp_app.urls')), 
]

ターミナルを開き,"tmp_project"のディレクトリで"python manage.py runserver"を実行する.以下が出力されるので,"http://127.0.0.1:8000/"をブラウザで開く.

System check identified no issues (0 silenced). 
June 19, 2021 - 03:45:49 
Django version 3.2.3, using settings 'tmp_project.settings' 
Starting development server at http://127.0.0.1:8000/ 
Quit the server with CTRL-BREAK.

“http://127.0.0.1:8000/"をブラウザで開くと以下のようになる.

URLに"http://127.0.0.1:8000/template_app/"を入力すると,"tmp_project/templates/index.html"に記述した内容がブラウザによって表示される.

以上