タイトル: テンプレートの作成と共通化
SEOタイトル: djangoのテンプレートの作成とヘッダー・フッターの共通化
テンプレートの基本
アプリケーションディレクトリ直下にtemplatesディレクトリを作成しましょう。
templatesディレクトリ内に以下のindex.htmlを作成します。
{% if item_list %} <ul> {% for item in item_list %} <li>{{ item }}</li> {% endfor %} </ul> {% else %} <p>No item.</p> {% endif %} |
templateに値を渡すviewを作成しましょう。
アプリケーションディレクトリ直下のviews.pyに以下の記述をしましょう。
from django.shortcuts import render def index(request): item_list = ['a', 'b', 'c'] template = loader.get_template('index.html') context = { 'item_list': item_list, } return render(request, 'index.html', context) |
indexにリクエストするとテンプレートを表示することが出来ます。
テンプレートの共通化
ヘッダーやフッターといったテンプレートの共通部分を実装するには以下のようにします。
以下、共通部分となるbase.pyです。
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>{% block title %}{% endblock title %}</title> </head> <body> {% block content %} {% endblock %} </body> </html> |
独自実装の部分は
{% block content %}
{% endblock %}
となります。
{% block title %}{% endblock title %}
は後述します。
以下、独自実装部分のテンプレートです。
{% extends "base.html" %} {% block title %}ページタイトル{% endblock title %} {% block content %} <form method="post"> {% csrf_token %} ... </form> {% endblock %} |
extendsで共通テンプレートを読み込んでblock content内に独自実装部分を記載します。
ページごとにタイトルを変える必要があるので、block titleに対してページのタイトルを設定しましょう。