حقن القوالب

albaderمنذ 5 سنوات

في هذا الدرس ان شاء الله سنتعلم كيفية حقن القوالب 

 

 

وسيكون تكملة للدرس السابق التعامل مع القوالب

 

وسنتعامل مع نفس الدالة التي قمنا بانشائها

home_template

كما في الدرس السابق لدينا دالة تعيد لنا

return render(request, 'blog/home.html', context={})

 

context

عباره عن

dictionary  او مايعرف بالقاموس

والدكشنري في بايثون او غيرها من اللغات

تتكون من مفتاح وقيمة

المفتاح هو ماسنستخدمة داخل ملفات html  اما القيمة هي التي ستظهر بداخل القالب

 

سنتظرق تدريجيا

سنضع رسالة ترحيبية لها مفتاح كما في الصورة التالية

 

h  هو المفتاح   للرسالة الترحيبية

الان سنذهب الى قالبنا  وتحديدا ملف home.html 

 

 

سنقوم بحقن  المفتاح بداخله

وطريقة الحقن كالتالي

{{ h }}

يكون المفتاح بين علامتين معكوفتين

 

كما في الصورة التالية

نذهب الى المتصفح الان لنرى النتيجة

http://127.0.0.1:8000/template

 

ستكون النتيجة التالية

 

جميل جدا

--------------------------------------------------------------------------

 

سننتقل الى اشياء متقدمة قليلا بطريقة الحقن والتحكم من داخل القوالب

 

سنقوم بداخل دالتنا home_template

نقوم بتعريف متغيرات

من عدة انواع نصوص ارقام  مصفوفات صحيح وخاطئ الى اخره

كما في الصورة التالية

 

 

نقوم بعمل متغير context

لنضع فيه المفاتيح لجميع المتغيرات السابقة

فقط للترتيب بدل ان نقوم بوضع المفاتيح والقيم داخل دالة render

سنضعها داخل متغير كما في الصورة التالية

 

سابقا كنا نعيد القاموس بداخل المعامل الثالث للدالة render

كالتالي

    return render(request, 'blog/home.html', context={})

 

الان سنقوم بوضع المتغير context

الذي قمنا بانشائه داخل الدالة

 

ليصبح كالتالي

 

بعد ان انتهينا

 

سنقوم باستدعاء ماسبق من متغيرات بداخل ملف home.html

انظر الصورة

استدعينا النص {{ s }}

والرقم عن طريق المفتاح {{ m }}

واللستة عن طريق المفتاح  {{ object_list }}

بعد تشغيل السيرفر والذهاب للمتصفح

 

نرى النتيجة

 

جميل جدا

 

عادت قيمة اللسته عباره عن لستة

الان كيف سنعمل حلقة دوران على اللستة

في جانغو  سنستخدم

{% for foo in list %}

{% endfor %}

وللشروط في القوالب سنستخدم 
{% if any %}

{% endif %}

 

 

انظر الى الصورة التالية كيفية التعامل مع اللستة

قمنا بعمل حلقة على محتويات اللستة object_list  وعرفنا اسم جديد لها باسم foo

وقمنا بطباعتها عباره عن order list باستخدام وسم html

ol

نذهب للمتصفح وننظر للنتيجة

 

جميل جدا

 

 

كيفية التعامل مع الشروط في القوالب

 

في دالتنا home_list

قمنا بعمل متغير باسم check  يحمل قيمة True

 

سنجعله هو شرطنا بهذا المثال

 

نذهب الى القالب

ونضع شرط  للحلقة التي وضعناها سابقا لو تحقق الشرط يقوم بتنفيذ الحلقة

 

 

 

لو ذهبنا للمتصفح وعملنا تحديث ستظهر لنا النتائج كاملة

 

لو ذهبنا الى المتغير check

وقمنا بتغير قيمته الى False

ورجعنا للمتصفح وقمنا بعمل تحديث

لن يظهر شيء لان الشرط لم يتحقق

 

ماذا لو أريد ان اضع نتيجة لو لم يتحقق الشرط

 

كما في لغة البرمجة else

كالتالي

{% if check %}
    <ol>
        {% for foo in object_list %}
            <li>{{ foo }}</li>
        {% endfor %}
    </ol>
    {% else %}
        <h1>Sorry !</h1>
{% endif %}

لو لم يتحقق الشرط سيقوم بتنفيذ نفي الشرط ويظهر النتيجة

Sorry !

 

الى هنا وينتهي درسنا لهذا اليوم

 

الى دروس اخرى ان شاء الله

 

التعليقات (1)

khaled:

هناك صور ناقصة  الرجاء اصلاح الخطاء 

لايوجد لديك حساب في عالم البرمجة؟

تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !