Menu
CoddyTech

サイトのナビゲーション

CoddyのDjangoジャーニー「Djangoの基礎」セクションの一部。レッスン 23/23。

サイトには現在、共通レイアウトを持つページが5つあります(Aboutにもテンプレートができました)。しかし、base.htmlのナビゲーションには3つしか記載されておらず、現在どのページにいるのかも表示されません。

すべてのテンプレートは、応答対象のリクエストであるrequestを読み取れます。これは、settings.pyでrequestコンテキストプロセッサがTEMPLATESに記載されているためです。request.resolver_matchは、一致したルートを示します。url_nameは名前空間を含まない名前("contact")で、view_nameは完全な名前("menu:contact")です。テンプレートでは、1つのページだけにメッセージを表示できます。

{% if request.resolver_match.url_name == "contact" %}
    <p>We reply within a day.</p>
{% endif %}
challenge icon

チャレンジ

中級

base.htmlで、ナビゲーションリンクをHome、Menu、Drinks、Hours、Aboutの順に作成し、それぞれのリンク先は{% url %}で指定します。各ページでは、そのページへのリンクだけにclass="active"を設定します。

style.cssでnav a.activeに太字などのスタイルを設定し、Runを押してナビゲーションをクリックして確認します。

自分で試してみよう

{% load static %}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>{% block title %}Corner Café{% endblock %}</title>
    <link rel="stylesheet" href="{% static 'menu/style.css' %}">
</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>
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

Djangoの基礎のすべてのレッスン

自分で練習してみよう: Djangoプレイグラウンド