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.

לחץ על Run, ואז פתח את /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

תרגלו בעצמכם: Django אונליין