Навигация по сайту
Часть раздела Основы 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 %}Задание
СреднеВ 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>
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы Django
1Ваш первый сайт на Django
Привет, DjangoВторая страница4Макеты и статические файлы
Наследование шаблоновЗаголовок для каждой страницыПотренируйтесь самостоятельно: Песочница Django