أجزاء القوالب
جزء من قسم واجهات API بصيغة JSON في رحلة Django على Coddy. الدرس 14 من 19.
لا يحتاج البرنامج النصي دائمًا إلى JSON. بعد إضافة مهمة، قد يطلب من الخادم عنصر <li> جاهزًا لتلك المهمة، ثم يضيفه إلى القائمة. يرسم القالب هذا الصف بالفعل، لذا ينبغي للخادم إعادة استخدامه.
أضاف Django 6.0 أجزاء القوالب: جزءًا مسمّى من القالب يمكنك أيضًا عرضه منفردًا. أَحِطْه بـ {% partialdef %}؛ كما أن inline يرسمه في موضعه، في كل دورة من الحلقة. يعرض العرض الجزء وحده باستخدام اسم القالب، و#، واسم الجزء:
{% partialdef cart-total inline %}
<strong>{{ cart.total }}</strong>
{% endpartialdef %}return render(request, "shop/cart.html#cart-total", {"cart": cart})يجب أن يحتوي السياق على ما يقرؤه الجزء، وهو cart هنا. تشترك الصفحة والجزء في الترميز نفسه، لذا لا يمكن أن يتباعدا.
التحدي
متوسطاعرض صفًا واحدًا من /tasks/ بمفرده:
- في
list.html، اجعل<li>جزءًا جزئيًا باسمtask-row، مع الاستمرار في عرضه لكل مهمة. - أنشئ عرضًا
task_row(request, pk)يعرض هذا الجزء الجزئي فقط، ويُرجع 404 عند عدم العثور على المهمة. - أضف المسار
"tasks/<int:pk>/row/"، وسمّهtask_row.
اضغط على «تشغيل»، ثم افتح /tasks/1/row/: سيظهر صف واحد.
جرّب بنفسك
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>All tasks</title>
</head>
<body>
<h1>All tasks</h1>
<ul id="tasks">
{% for task in tasks %}
<li id="task-{{ task.id }}">{{ task.title }}{% if task.done %} (done){% endif %}</li>
{% endfor %}
</ul>
</body>
</html>
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس واجهات API بصيغة JSON
تدرّب بنفسك: Playground لـ Django