أجزاء القوالب
جزء من قسم واجهات API بصيغة JSON في رحلة Django على Coddy. الدرس 14 من 19.
لا يحتاج البرنامج النصي دائمًا إلى JSON. بعد إضافة مهمة، قد يطلب من الخادم عنصر <li> الجاهز لتلك المهمة ويُدرجه في القائمة. يعرض قالبٌ هذا الصف بالفعل، لذا ينبغي للخادم إعادة استخدامه.
أضاف Django 6.0 الأجزاء الجزئية للقوالب: جزءًا مسمّى من قالب يمكنك عرضه منفردًا أيضًا. أَحِطْه بـ {% partialdef name %} و{% endpartialdef %}؛ ومع الكلمة inline يُعرَض أيضًا في موضعه، مرةً لكل عنصر في الحلقة. يعرض أحد العروض هذا الجزء وحده باستخدام اسم القالب، و#، واسم الجزء الجزئي:
{% partialdef cart-total inline %}
<strong>{{ cart.total }}</strong>
{% endpartialdef %}return render(request, "shop/cart.html#cart-total", {"cart": cart})يجب أن يحتوي السياق على ما يقرأه الجزء، وهو هنا cart. تشترك الصفحة والجزء في ترميز واحد، لذا لا يمكن أن يختلفا.
التحدي
متوسطاعرض صفًا واحدًا من صفحة /tasks/ الجديدة بمفرده.
- في
tasks/list.html، اجعل عنصر<li>في الحلقة جزءًا جزئيًاinlineباسمtask-row، بحيث تستمر/tasks/في عرض كل الصفوف. - في
tasks/views.py، أضفtask_row(request, pk): اعرض هذا الجزء الجزئي فقط، مع تمريرtask، أو صفحة 404 من Django. - في
tasks/urls.py، أضف المسار"tasks/<int:pk>/row/"بالاسمtask_row.
افتح /tasks/3/row/: اعرض Call the bank (done) فقط، من دون عنوان.
جرّب بنفسك
<!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