Menu
CoddyTech

Навигация по сайту

Часть раздела Основы Django путешествия по Django на Coddy. Урок 23 из 23.

Теперь у сайта пять страниц с общей структурой (для About тоже появился шаблон), но в навигации в base.html перечислены три страницы, и она никак не показывает, где вы находитесь.

Каждый шаблон может читать request — запрос, на который даётся ответ, — потому что в settings.py в TEMPLATES указан контекстный процессор request. request.resolver_match описывает совпавший маршрут: url_name — это его имя без пространства имён ("contact"), а view_name — полное имя ("menu:contact"). Шаблон может показывать строку только на одной странице:

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

Задание

Средне

В base.html размести ссылки навигации «Главная», «Меню», «Напитки», «Часы работы» и «О нас» именно в таком порядке, адрес каждой сформируй с помощью {% url %}. На каждой странице только ссылка на эту страницу должна иметь class="active".

Задай стиль для nav a.active в style.css, например, сделай текст полужирным, затем нажми Запустить и перейди по ссылкам навигации.

Попробуйте сами

{% 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