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

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