בניית תצוגות ותבניות דינמיות ב-Django

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

מהן תצוגות ב-Django?

ב-Django, view היא פונקציית Python או רכיב מבוסס-כיתה שלוקח בקשת אינטרנט ומחזירה תגובת אינטרנט. התגובה יכולה להיות דף HTML, אובייקט JSON או כל סוג אחר של תוכן. תצוגות מאפשרות לך ליצור באופן דינמי תוכן על סמך בקשת המשתמש.

יצירת תצוגה פשוטה

כדי ליצור תצוגה ב-Django, עליך להגדיר פונקציה בקובץ views.py של אפליקציית Django שלך. הפונקציה מקבלת בקשת HTTP ומחזירה תגובת HTTP. לְדוּגמָה:

from django.shortcuts import render

def home(request):
    return render(request, 'home.html')

תצוגה פשוטה זו מציגה את התבנית "home.html". אבל אנחנו יכולים להפוך את זה ליותר דינמי על ידי העברת נתונים מהתצוגה לתבנית.

העברת נתונים לתבניות

כדי להעביר נתונים מתצוגה לתבנית, ניתן להשתמש במילון בארגומנט ההקשר בעת קריאה לפונקציית העיבוד. לדוגמה, בואו נשנה את התצוגה "home" כדי להעביר הודעה דינמית לתבנית:

def home(request):
    context = {
        'message': 'Welcome to my website!'
    }
    return render(request, 'home.html', context)

כעת, בתבנית "home.html", אתה יכול לגשת למשתנה 'הודעה':

<h1>{{ message }}</h1>

פעולה זו תציג את ההודעה שהועברה מהתצוגה: "ברוכים הבאים לאתר שלי!"

שימוש בתגיות תבנית עבור תוכן דינמי

תבניות Django תומכות בתגיות תבנית עוצמתיות שעוזרות ליצור תוכן דינמי ב-HTML שלך. כמה תגיות תבנית נפוצות הן:

  • {% if %}... {% endif %} להצהרות מותנות.
  • {% for %}... {% endfor %} למעבר נתונים בלולאה.
  • {{ משתנה }} להכנסת ערכים דינמיים ל-HTML.

שימוש בהצהרת אם

בואו נוסיף הודעה דינמית שמופיעה רק אם תנאי מסוים נכון. שנה את התצוגה "home" כדי להעביר תנאי:

def home(request):
    context = {
        'message': 'Welcome to my website!',
        'user_logged_in': True
    }
    return render(request, 'home.html', context)

בתבנית, אתה יכול להשתמש בהצהרה if כדי להציג הודעת פתיחה רק אם המשתמש מחובר:

{% if user_logged_in %}
    <p>You are logged in!</p>
{% else %}
    <p>Please log in to access more features.</p>
{% endif %}

לולאה דרך נתונים

כעת, בואו נעביר רשימה של פריטים לתבנית ונציג אותם באמצעות לולאה for. ראשית, שנה את התצוגה:

def home(request):
    context = {
        'message': 'Welcome to my website!',
        'items': ['Item 1', 'Item 2', 'Item 3']
    }
    return render(request, 'home.html', context)

כעת, בתבנית, השתמש בלולאה for כדי להציג כל פריט:

<ul>
{% for item in items %}
    <li>{{ item }}</li>
{% endfor %}
</ul>

פעולה זו תציג רשימה לא מסודרת של פריטים: פריט 1, פריט 2 ופריט 3.

ירושה של תבנית עבור פריסות לשימוש חוזר

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

<!-- base.html -->
<html>
    <head>
        <title>My Website</title>
    </head>
    <body>
        <header>
            <h1>My Website</h1>
        </header>
        
        <main>
            {% block content %}{% endblock %}
        </main>

        <footer>
            <p>Footer content here</p>
        </footer>
    </body>
</html>

כעת, בתבנית "home.html" שלך, הארך את תבנית הבסיס והגדר את בלוק התוכן:

<!-- home.html -->
{% extends 'base.html' %}

{% block content %}
    <h2>Welcome to the Home Page</h2>
    <p>This is the dynamic content of the home page.</p>
{% endblock %}

לאחר עיבוד, התוכן "home.html" יוכנס לקטע {% block content %}{% endblock %} של תבנית הבסיס.

מַסְקָנָה

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

עם המושגים האלה, אתה יכול להתחיל לבנות אפליקציות Django מורכבות יותר ולמנף את מלוא העוצמה של המסגרת.