Ссылки между страницами
Часть раздела Основы Django путешествия по Django на Coddy. Урок 16 из 23.
У каждого напитка есть своя страница по адресу /drinks/<slug>/, и список на странице /drinks/ должен вести на эти страницы. В шаблоне тег {% url %} формирует адрес по имени маршрута, как это делает reverse() в представлении:
<a href="{% url 'menu:about' %}">About us</a>
<a href="{% url 'menu:table' 7 %}">Table 7</a>Сначала указывается имя в кавычках вместе с пространством имён. Далее через пробел указываются значения конвертеров, и это могут быть переменные: в цикле {% url 'menu:table' table.number %} формирует адрес каждой таблицы. Теперь у каждого напитка в DRINKS есть собственный slug.
Неправильное имя или значение приводит к сбою страницы с ошибкой NoReverseMatch, поэтому неработающая ссылка обнаружится во время создания страницы, а не когда посетитель нажмёт на неё.
Задание
ЛегкоВ drinks.html сделай название каждого напитка ссылкой на его страницу: <a href="...">Latte</a> ведёт на /drinks/latte/. Создай адрес с помощью {% url %} и slug напитка.
Нажми Run и щёлкни по Flat White на /drinks/.
Попробуйте сами
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Our Drinks</title>
</head>
<body>
<h1>Our Drinks</h1>
<p class="count">{{ drinks|length }} drink{{ drinks|pluralize }}</p>
<ul>
{% for drink in drinks %}
<li class="drink">
{{ drink.name }}
<span class="price">${{ drink.price|floatformat:2 }}</span>
{% if drink.sold_out %}
<span class="sold-out">Sold out</span>
{% endif %}
</li>
{% empty %}
<li>No drinks today.</li>
{% endfor %}
</ul>
</body>
</html>
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы Django
1Ваш первый сайт на Django
Привет, DjangoВторая страница4Макеты и статические файлы
Наследование шаблоновЗаголовок для каждой страницы3Шаблоны
Ваш первый шаблонПеременные шаблонаПотренируйтесь самостоятельно: Песочница Django