الروابط بين الصفحات
جزء من قسم أساسيات 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 وانقر على فلات وايت في /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
3القوالب
قالبك الأولمتغيرات القوالبتدرّب بنفسك: Playground لـ Django