各ページにタイトルを付ける
CoddyのDjangoジャーニー「Djangoの基礎」セクションの一部。レッスン 18/23。
/drinks/はbase.htmlを継承しているため、タイトルはホームページと同じCorner Caféと表示されます。ブロックを使えばこれを変更できます。ブロックにはデフォルトのコンテンツを含められるからです。ブロックに内容を指定したページではデフォルトの内容が置き換えられ、指定しないページではそのまま使われます。
<h1>{% block heading %}City Library{% endblock %}</h1>
<article>{% block body %}{% endblock %}</article>フレームには必要なだけブロックを含められ、それぞれに固有の名前を付けられます。このページでは両方に内容を指定します。
{% extends "library/base.html" %}
{% block heading %}Opening Times{% endblock %}
{% block body %}<p>Until 20:00.</p>{% endblock %}bodyだけに内容を指定するページでは、見出しのCity Libraryがそのまま使われます。
チャレンジ
簡単base.htmlで、タイトルのテキストをtitleという名前のブロックにし、デフォルト値をCorner Caféにします。/drinks/のタイトルをOur Drinks | Corner Caféにします。ホームページではデフォルトのままにします。
実行を押すと、/drinks/でサイトのタイトルバーにOur Drinks | Corner Caféと表示されます。
自分で試してみよう
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Corner Café</title>
</head>
<body>
<nav>
<a href="{% url 'menu:home' %}">Home</a>
<a href="{% url 'menu:drinks' %}">Drinks</a>
<a href="{% url 'menu:about' %}">About</a>
</nav>
<main>
{% block content %}{% endblock %}
</main>
</body>
</html>
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
Djangoの基礎のすべてのレッスン
自分で練習してみよう: Djangoプレイグラウンド