إنشاء وجهات نظر وقوالب ديناميكية في Django
Django هو إطار عمل قوي يسهل بناء تطبيقات ويب ديناميكية. في هذه المقالة، سنستكشف كيفية بناء عروض وقوالب ديناميكية في Django، بدءًا من المفاهيم الأساسية إلى التقنيات الأكثر تقدمًا. سنغطي كيفية تمرير البيانات من العروض إلى القوالب وكيفية استخدام علامات القالب لتوليد محتوى ديناميكيًا بناءً على تلك البيانات.
ما هي المشاهدات في جانجو؟
في Django، العرض هو دالة 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"، يمكنك الوصول إلى المتغير `message`:
<h1>{{ message }}</h1>
سيؤدي هذا إلى عرض الرسالة المرسلة من العرض: "مرحبًا بك في موقعي الإلكتروني!"
استخدام علامات القالب للمحتوى الديناميكي
تدعم قوالب Django علامات قالب قوية تساعد في إنشاء محتوى ديناميكي في HTML. بعض علامات القالب الشائعة هي:
{% if %}... {% endif %}
للعبارات الشرطية.{% لـ %}... {% endfor %}
للتكرار عبر البيانات.{{ متغير }}
لإدراج القيم الديناميكية في HTML.
استخدام جملة If
دعنا نضيف رسالة ديناميكية تظهر فقط إذا كان شرط معين صحيحًا. قم بتعديل العرض "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 أكثر تعقيدًا والاستفادة من القوة الكاملة للإطار.