English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
يستطيع Django تقسيم Python و HTML بشكل مستقل، حيث يدخل الكود/المتغير في المشهد وقالب HTML. يربط Django بينهما من خلال وظيفة التجميع وقوالب Django.
يحتوي هذا الدالة على ثلاثة معاملات −
طلب − تعريف الطلبمسار القالب − هذا هو المسار بالنسبة لخيار TEMPLATE_DIRS في ملف project settings.py.معجم المعاملات − يحتوي المعجم على جميع المتغيرات المطلوبة في القالب. يمكن إنشاء هذه المتغيرات أو استخدامها من خلال locals() عبر جميع المتغيرات المحلية المعلنة في المشهد.
لغة قوالب Django (DTL)
يقدم محرك قوالب Django لغة صغيرة لتعريف الطبقة التي تواجه المستخدمين في التطبيق.
عرض المتغير
عرض المتغير كما يلي: {{variable}}. يتم استبدال المتغيرات بالمتغيرات التي يرسلها المشهد في وظيفة التجميع (render) كالثالثة من خلال المعاملات. دعنا نغير hello.html ليعرض تاريخ اليوم :
hello.html
# اسم الملف: example.py # حقوق النشر: 2020 بواسطة w3codebox # الكاتب بواسطة: ar.oldtoolbag.com # تاريخ: 2020-08-08 <html> <body> مرحبًا بك في العالم!!!<p>اليوم هو {{today}}</p> </body> </html>
ثم، سيتم تغيير مشهدنا إلى −
# اسم الملف: example.py # حقوق النشر: 2020 بواسطة w3codebox # الكاتب بواسطة: ar.oldtoolbag.com # تاريخ: 2020-08-08 def hello(request): today = datetime.datetime.now().date() return render(request, "hello.html", {"today": today})
الآن، سنحصل على النتيجة التالية بعد زيارة URL /myapp/hello −
# اسم الملف: example.py # حقوق النشر: 2020 بواسطة w3codebox # الكاتب بواسطة: ar.oldtoolbag.com # تاريخ: 2020-08-08 مرحبًا بالعالم!!! اليوم هو 11 أيلول 2015
كما قد لاحظت، إذا لم يكن المتغير نصًا، يستخدم Django دالة __str__ لعرضه; وبنفس المبدأ، يمكنك الوصول إلى خصائص الكائن، مثل استخدام Python. على سبيل المثال: إذا أردنا عرض سنة التاريخ، المتغير هنا هو: {{today.year}}.
يمكنها مساعدتك في عرض المتغيرات المعدلة. بنية المرشح كما يلي: {{var|filters}}.
مثال بسيط −
− مرشح ينقص النص، لذا ترى فقط 80 حرفًا.
− تحويل حروف النص إلى صغيرة {{string|escape|linebreaks}} − تحويل محتوى النص إلى علامة، ثم تحويل النسخة إلى علامات النسخة.
يمكن أيضًا تعيين المتغيرات الافتراضية.
يمكن للعلامات تنفيذ العمليات التالية: شرط if، دائرة for، وراثة النموذج، وأكثر من ذلك.
مثل في بايثون، يمكنك استخدام if، else و elif في النموذج -
# اسم الملف: example.py # حقوق النشر: 2020 بواسطة w3codebox # الكاتب بواسطة: ar.oldtoolbag.com # تاريخ: 2020-08-08 <html> <body> مرحبًا بك في العالم!!!<p>اليوم هو {{today}}</p> نحن {% if today.day == 1 %} أول يوم في الشهر. {% elif today == 30 %} آخر يوم في الشهر. {% else %} لا أعرف. {% endif %} </body> </html>
في هذا النموذج الجديد، بناءً على تاريخ اليوم، سيتم عرض هذه القيمة.
مثل 'if'، لدينا علامة 'for'، وهي تستخدم تمامًا مثل في بايثون. دعونا نغير قائمة عرض النموذج hello -
# اسم الملف: example.py # حقوق النشر: 2020 بواسطة w3codebox # الكاتب بواسطة: ar.oldtoolbag.com # تاريخ: 2020-08-08 def hello(request): today = datetime.datetime.now().date() daysOfWeek = ['الإثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت', 'الجمعة'] return render(request, "hello.html", {"today": today, "days_of_week": daysOfWeek})
يستخدم هذا النموذج لعرض القوائم {{ for }} -
# اسم الملف: example.py # حقوق النشر: 2020 بواسطة w3codebox # الكاتب بواسطة: ar.oldtoolbag.com # تاريخ: 2020-08-08 <html> <body> مرحبًا بك في العالم!!!<p>اليوم هو {{today}}</p> نحن {% if today.day == 1 %} أول يوم في الشهر. {% elif today == 30 %} آخر يوم في الشهر. {% else %} لا أعرف. {% endif %} <p> {% for day in days_of_week %} {{day}} </p> {% endfor %} </body> </html>
يجب أن نحصل على النتيجة التالية من الاعتماد
# اسم الملف: example.py # حقوق النشر: 2020 بواسطة w3codebox # الكاتب بواسطة: ar.oldtoolbag.com # تاريخ: 2020-08-08 مرحبًا بالعالم!!! اليوم هو 11 أيلول 2015 نحن لا أعلم الإثنين الثلاثاء الأربعاء الجمعة الخميس السبت الجمعة
علامات النصوص والتمديدات
نظام النماذج غير كامل للوراثة النمطية. عندما تصمم معنى النموذج، النموذج الفرعي سيملأ النموذج الرئيسي حسب الحاجة، مثل كيف يمكن أن يحتاج بطاقة اختيار في صفحة إلى CSS خاصة.
دعونا نعدل نموذج hello.html ليرث من main_template.html.
main_template.html
# اسم الملف: example.py # حقوق النشر: 2020 بواسطة w3codebox # الكاتب بواسطة: ar.oldtoolbag.com # تاريخ: 2020-08-08 <html> <head> <title> {% block title %}عنوان الصفحة {% endblock %} </title> </head> <body> {% block content %} محتوى الجسم {% endblock %} </body> </html>
hello.html
# اسم الملف: example.py # حقوق النشر: 2020 بواسطة w3codebox # الكاتب بواسطة: ar.oldtoolbag.com # تاريخ: 2020-08-08 {% extends "main_template.html" %} {% block title %}صفحة مرحب بك الخاصة بي{% endblock %} {% block content %} مرحبًا بك في العالم!!!<p>اليوم هو {{today}}</p> نحن {% if today.day == 1 %} أول يوم في الشهر. {% elif today == 30 %} آخر يوم في الشهر. {% else %} لا أعرف. {% endif %} <p> {% for day in days_of_week %} {{day}} </p> {% endfor %} {% endblock %}
في المثال أعلاه، عند استدعاء /myapp/hello، سنحصل على نفس النتيجة كما في الماضي، ولكن الآن نعتمد على التوسيع وليس على إعادة بناء الكود-−
في main_template.html، نحدد استخدام العلامات المكتوبة. سيحتوي على رأس الصفحة، والنص في المقطع الرئيسي في الصفحة. إذا استخدمت توريث التوسيع في Home.html من main_template.html، فإننا نستخدم العلامات المكتوبة أعلاه (المحتوى والرأس).
استخدام علامات التعليق لتحديد التعليقات في القالب، وليس تعليقات HTML، فإنها لن تظهر في صفحة HTML. يمكن أن تكون ملفًا أو مجرد سطر تعليق.