Python | Django | テンプレートの継承方法
公開日:2021/6/21
Pythonには,DjangoというWebアプリケーションフレームワークがある.フレームワークのため,Djangoを利用するとWebアプリを通常よりも短時間で開発することが可能になる.
前記事にて,Viewの値をテンプレートに渡す方法を記した.前記事での設定をそのまま引き継いだ上で,本記事では,テンプレートの継承方法を以下に記す.
◆実施環境
Python 3.8.8
Django 3.2.3
■テンプレートの継承方法
“tmp_project/templates"に親テンプレートファイルである"base.html"および子テンプレートファイルである"sub1.html"と"sub2.html"を作成する."tmp_project"の構成は以下のようになる.
親テンプレートファイルである"tmp_project/templates/base.html"には,以下のように記述する.
<!DOCTYPE html>
<html>
<head>
<title>{% block title %}My site{% endblock %}</title>
</head>
<body>
<h2>My site for template inheritance</h2>
{% block content %}{% endblock %}
</body>
</html>
子テンプレートファイルである"tmp_project/templates/sub1.html"には,以下のように記述する.
{% extends "base.html" %}
{% block title %}sub1 page{% endblock %}
{% block content%}
<h2>sub1 page for template inheritance</h2>
{% endblock %}
もう1つの子テンプレートファイルである"tmp_project/templates/sub2.html"には,以下のように記述する.
{% extends "base.html" %}
{% block title %}sub2 page{% endblock %}
{% block content%}
<h2>sub2 page for template inheritance</h2>
{% endblock %}
“tmp_app/views.py"にsub1とsub2の関数を追記する.追記後のviews.pyは以下のようになる.
from django.shortcuts import render
def index(request):
return render(request,'index.html',context={
'greeting_mo':'Good Morning',
'greeting_af':'Good Afternoon',
'greeting_ev':'Good Evening',
'drink_list':['water','coffee','tea','milk'],
})
def sub1(request): # 以降が追記箇所
return render(request,'sub1.html')
def sub2(request):
return render(request,'sub2.html')
“tmp_app/utls.py"にpathを2種類追記する.追記後のurls.pyは以下のようになる.
from django.urls import path
from . import views
app_name = 'tmp_app'
urlpatterns = [
path('',views.index,name='index'),
path('sub1',views.sub1,name='sub1'), # 追記箇所
path('sub2',views.sub2,name='sub2'), # 追記箇所
]
“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')),
]
ターミナルを開き,”conda activate 仮想環境名”を実行し,仮想環境に移行する.”tmp_project”のディレクトリで”python manage.py runserver”を実行すると,以下が出力される.
System check identified no issues (0 silenced).
June 21, 2021 - 17:44:35
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/sub1”を記入し,ブラウザを開くと,”sub1.html”に記述した内容が以下のように出力される.
ブラウザのURLに”http://127.0.0.1:8000/template_app/sub2”を記入し,ブラウザを開くと,”sub1.html”に記述した内容が以下のように出力される.
以上