חלקי תבנית
חלק מהיחידה ממשקי 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. העמוד והחלק חולקים את אותו סימון, כך שהם לא יכולים לסטות זה מזה.
אתגר
בינוניהצג שורה אחת מתוך /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>
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה ממשקי API של JSON
תרגלו בעצמכם: Django אונליין