Menu
CoddyTech

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

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

challenge icon

التحدي

متوسط

اعرض صفًا واحدًا من /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>
quiz iconاختبر نفسك

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

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

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