נפתרה: מרחיב שני base.html

העדכון אחרון: 09/18/2023

כאשר עוסקים בפיתוח אתרים, אחד המרכיבים המשמעותיים שרוב המפתחים נתקלים בהם הוא הצגת אותו מראה ותחושה ברחבי האתר. אחת הדרכים היעילות ביותר להשיג עקביות כזו היא באמצעות תבניות בסיס או base.html ב-Django, מסגרת אינטרנט ברמה גבוהה של Python המקדמת פיתוח מהיר. דרופל מנצלת את הרעיון של ירושה במיטבו ומספקת מנגנון להרחבת תבניות בסיס לתבניות בנות מרובות.

כדי לפתור את הבעיה של רכיב עיצוב עקבי ברחבי האתר שלך, הרחבה של שתי תבניות בסיס יכולה להיות שימושית. תבניות הבסיס מכילות את מבנה השלד של HTML שנשאר קבוע בכל יישום האינטרנט. תבניות הצאצא מכילות את התוכן של דפי אינטרנט בודדים המשתנה מעמוד לדף. תבניות צאצא אלו יורשות מאפיינים מתבניות בסיס האב באמצעות הורשת תבנית.

כעת נעמיק בהסבר שלב אחר שלב של הקוד הקשור לבעיה.

ניתן להגדיר את תבנית הבסיס לדוגמה כך:

<!DOCTYPE html>
<html lang="en">
<head>
    {% block head %}
    <title>My Site</title>
    {% endblock %}
</head>
<body>
    {% block content %}
    {% endblock %}
</body>
</html>

לאחר מכן ניתן להרחיב את ה-base.html באמצעות תבנית צאצא כ:

{% extends "base.html" %}

{% block head %}
    <title>My Page</title>
{% endblock %}

{% block content %}
    <h1>Welcome!</h1>
    <p>Here is your content...</p>
{% endblock %}

זה לגבי הרחבת תבנית בסיס אחת. אבל מה אם יש לך שתי תבניות בסיס להרחבה? הדברים קצת מסובכים כאן מכיוון ש-Python לא תומך ישירות בירושה מרובה.

דרכים לעקיפת הבעיה עבור תבניות בסיס מרובות

הטריק טמון בחלוקת התוכן שלך למספר חלקים או בלוקים. להלן דוגמה לאופן שבו אתה יכול להצליח להרחיב שתי תבניות בסיס באמצעות בלוקים.

{% block content %}
    {% block content_one %}
    {% endblock %}

    {% block content_two %}
    {% endblock %}
{% endblock %}

כאן, בלוק ה'תוכן' מתבנית הבסיס מחולק לשני בלוקים נוספים - 'content_one' ו-'content_two'. תבניות בסיס שונות יכולות להרחיב את הבלוקים הללו.

ספריית פייתון: ג'נגו

כשזה מגיע לפיתוח אתרים עם Python, Django היא ה-Python Web Framework הפופולרית והחזקה ביותר. הוא פועל לפי עיקרון DRY (Don't Repeat Yourself) המעודד שימוש חוזר ברכיבים. מנוע תבניות Django, חלק מ-Django Framework, הוא כלי בסיסי אך רב עוצמה לפיתוח אינטרנט חזיתי המאפשר לנו להרחיב את הערך של Python לאינטרנט.

לסיכום, ניתן להרחיב שתי תבניות בסיס ב-Django, למרות שהמסגרת אינה תומכת ישירות בהורשה מרובה. המפתח הוא לפלח את התוכן למספר בלוקים שתבניות בסיס שונות יכולות להרחיב. זהו הפתרון היעיל ביותר לבעיה ומביא את כוח השימוש החוזר לתבניות שלך, ובכך הופך את הקוד שלך ליעיל יותר וניתן לניהול.

הערה: מנוע התבניות של Django משתמש בשפה בשם Django Template Language (DTL) ששואלת חלק מהתחביר שלה מ-Python אבל היא עצמה לא קוד Python.

הודעות קשורות: