الروابط بين الصفحات
جزء من قسم أساسيات 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 الخاص بالمشروب.
في /drinks/، انقر على Flat White: ستُفتح صفحة Flat White.
جرّب بنفسك
<!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
3القوالب
قالبك الأولمتغيرات القوالبتدرّب بنفسك: Playground لـ Django