القوالب الدينامكية في قوالب جانغو

لدينا العديد من الأجزاء والأكواد المتناثرة هنا وهناك، فلدينا نموذج المواضيع معرف في ملف models.py ولدينا قائمة المواضيع معرفة في views.py وقمنا أيضا بإضافة القالب، ولكن كيف يمكننا أن نجعل من مواضيعنا تظهر على قالب HTML ؟ وهذا مانريد عمله إضافة بعض المحتوى و عرضها بشكل منسق على قالبنا .

هذا بالضبط ماتقوم به VIEWS الإتصال بين النماذج والقوالب حيث نحتاج إلى أخذ النموذج الذي نريد إظهاره وتمريره إلى القالب وفي View نقرر ما هو النموذج الذي سيظهر في القالب.

قم بفتح ملف blog/views.py وأضف الكود التالي :


from django.shortcuts import render

def post_list(request):
    return render(request, 'blog/post_list.html', {})

هل تتذكر عندما تكلما عن تضمين كود مكتوب في ملف أخر ؟ الأن حان الوقت لتضمين النموذج الذي قمنا بكتابته في models.py سنقوم بإضافة السطر  from .models import Post


from django.shortcuts import render
from .models import Post

النقطة الموجود قبل models تعني الدليل الحالي أو التطبيق الحالي فكل من view.py و models.py موجودان داخل مجلد واحد وهذا يعني أننا بإمكاننا كتابة النقطة . وإسم الملف بدون إمتداد py بعدها نقوم بإستدعاء إسم النموذج (Post).

ماذا بعد ؟ لأخذ مواضيع المدونة من نموذج post نحتاج إلى مايسمى QuerySet
QuerySet

سبق لنا وأن تكلمنا عن كيفية عمل QuerySet في الدرس السابق ، والأن نريد نشر مواضيعنا حسب تاريخ النشر published_date وسبق لنا أيضا فعل هذا في الدرس السابق


Post.objects.filter(published_date__lte=timezone.now()).order_by('published_date')

و سنقوم بإضافة الكود التالي داخل ملف blog/views.py و بالضبط داخل دالة def post_list(request)


from django.shortcuts import render
from django.utils import timezone
from .models import Post

def post_list(request):
    posts = Post.objects.filter(published_date__lte=timezone.now()).order_by('published_date')
    return render(request, 'blog/post_list.html', {})

لا حظ أننا قمنا بإنشاء متغير إسمه Post ل QuerySet ومن الأن سنتعامل معها كونها إسم ل QuerySet الخاص بنا وسنناديها بهذا الإسم فقط .

هناك شيء أخر لربما قد لاحظته وهو أن الكود يستخدم وظيفة timezone.now()ولذلك قمنا بإستدعاء timezone

أما الجزء الأخير والذي لم نتكلم عنه بعد هو تمرير  مواضيع QuerySet إلى القالب ولكن لا تستعجل الأمور سنقوم بالتكلم عن هذه العملية في الدرس القادم .

أما وظيف, render والتي أدخلنا عليها 3 مدخلات وهي request (أي شيء نستقبله من طرف المستخدم عبر الأنرتنيت) وملف القالب ‘blog/post_list.html’ أما المدخل الأخير و الذي يبدو مثل {} وهنا يمكننا إضافة بعض الأشياء للقالب لإستخدامها ونحتاج إلى إعطائها إسم (في الوقت الراهن إعطيناها إسم posts) فقط تذكر أن الجزء الموجود قبل : عبارة عن سلسلة لذا وجب عليك وضعها داخل ‘ ‘  .

وأخيرا سيكون ملف blog/views.py على الشكل التالي :


from django.shortcuts import render
from django.utils import timezone
from .models import Post

def post_list(request):
    posts = Post.objects.filter(published_date__lte=timezone.now()).order_by('published_date')
    return render(request, 'blog/post_list.html', {'posts': posts})

 

أرجوا أن تقوم بدعمنا عبر نشرك والاعجاب بالموقع

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

Post Navigation