Menu
CoddyTech

أجزاء القوالب

جزء من قسم واجهات 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. تشترك الصفحة والجزء في ترميز واحد، لذا لا يمكن أن يختلفا.

challenge icon

التحدي

متوسط

اعرض صفًا واحدًا من صفحة /tasks/ الجديدة بمفرده.

  1. في tasks/list.html، اجعل عنصر <li> في الحلقة جزءًا جزئيًا inline باسم task-row، بحيث تستمر /tasks/ في عرض كل الصفوف.
  2. في tasks/views.py، أضف task_row(request, pk): اعرض هذا الجزء الجزئي فقط، مع تمرير task، أو صفحة 404 من Django.
  3. في 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>
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس واجهات API بصيغة JSON

تدرّب بنفسك: Playground لـ Django