البرمجة

استكشاف مرشحات Jinja: تحويل دينامي للبيانات في قوالب Python

متى يتعلق الأمر باستكشاف عمق محرك القوالب Jinja، يظهر أن هناك مجموعة واسعة ومتنوعة من المرشحات المدمجة التي تعزز قوة هذا المحرك وتسهم في تحقيق الكثير من الوظائف الرائعة. تمتزج هذه المرشحات بسلاسة مع هيكل Jinja لتمكين المطورين من تحويل البيانات بشكل فعال وفعّال. في هذا السياق، يأخذ الجزء الثاني من النظرة العميقة على المزيد من المرشحات المهمة التي تأتي بشكل قياسي مع Jinja.

  1. مرشح length:
    يُستخدم هذا المرشح لحساب عدد العناصر في تسلسل معين. على سبيل المثال، يمكنك استخدامه للتحقق من عدد العناصر في قائمة أو سلسلة نصوص.

    jinja
    {% set my_list = [1, 2, 3, 4, 5] %} {{ my_list|length }}

    في هذا المثال، سيقوم المرشح بإرجاع القيمة 5، وهي عدد العناصر في القائمة.

  2. مرشح default:
    يُستخدم لتحديد قيمة افتراضية يتم استخدامها في حالة عدم وجود قيمة للمتغير المعني. هذا يكون مفيدًا لتفادي الأخطاء الناتجة عن قيم فارغة.

    jinja
    {{ undefined_variable|default("قيمة افتراضية") }}

    في هذا المثال، إذا لم يكن لدى undefined_variable قيمة، سيظهر النص “قيمة افتراضية”.

  3. مرشح filter:
    يُستخدم لتطبيق مرشح آخر على المتغير الحالي. هذا يسمح بتحويل البيانات بشكل أكثر تخصيصًا.

    jinja
    {{ my_string|filter("upper") }}

    في هذا المثال، سيقوم المرشح upper بتحويل السلسلة إلى حروف كبيرة.

  4. مرشح join:
    يُستخدم لدمج عناصر قائمة إلى سلسلة واحدة باستخدام فاصل معين.

    jinja
    {% set my_list = ["apple", "banana", "orange"] %} {{ my_list|join(", ") }}

    سيقوم هذا بدمج العناصر بواسطة فاصلة وفراغ، ويظهر الناتج كـ “apple, banana, orange”.

  5. مرشح slice:
    يُستخدم لاستخراج جزء معين من تسلسل، مثل قائمة أو سلسلة.

    jinja
    {% set my_list = [1, 2, 3, 4, 5] %} {{ my_list|slice(1, 3) }}

    في هذا المثال، سيتم استخراج العناصر من المؤشر 1 إلى المؤشر 3، وسيكون الناتج هو [2, 3, 4].

  6. مرشح reverse:
    يُستخدم لعكس ترتيب العناصر في تسلسل.

    jinja
    {% set my_list = [1, 2, 3, 4, 5] %} {{ my_list|reverse }}

    سيؤدي هذا إلى عكس ترتيب العناصر لتصبح [5, 4, 3, 2, 1].

هذه مجرد نظرة سريعة على مجموعة من المرشحات المهمة التي يقدمها Jinja بشكل قياسي. يظهر الاستفادة الكبيرة من هذه المرشحات في تحسين قوة ومرونة محرك القوالب هذا، حيث يمكن للمطورين تكوين تحويلات دقيقة للبيانات وتنسيق النصوص بشكل دينامي وفعّال.

المزيد من المعلومات

تتنوع ميزات Jinja بشكل كبير، ولكن سنستكمل النظرة العميقة بالتركيز على مزيد من المرشحات والمفاهيم المهمة.

  1. مرشح first و last:
    يُستخدمان لاسترجاع أول وآخر عنصر في تسلسل على التوالي. هذا يكون مفيدًا في الوصول السريع إلى العناصر الطرفية.

    jinja
    {% set my_list = [1, 2, 3, 4, 5] %} {{ my_list|first }}, {{ my_list|last }}

    سيقوم هذا بعرض “1, 5” حيث يتم استخراج أول وآخر عناصر في القائمة.

  2. مرشح dictsort:
    يُستخدم لفرز قاموس (dictionary) بناءً على قيم أو مفاتيح محددة.

    jinja
    {% set my_dict = {'apple': 3, 'orange': 1, 'banana': 2} %} {{ my_dict|dictsort }}

    سيؤدي هذا إلى فرز القاموس وعرضه كقائمة من الأزواج المرتبة بترتيب القيم، مثل [('orange', 1), ('banana', 2), ('apple', 3)].

  3. مرشح map:
    يُستخدم لتطبيق دالة معينة على كل عنصر في تسلسل.

    jinja
    {% set my_list = [1, 2, 3, 4, 5] %} {{ my_list|map('square')|list }}

    في هذا المثال، يقوم المرشح بتربيع كل عنصر في القائمة، ويُظهر الناتج كـ [1, 4, 9, 16, 25].

  4. مرشح urlencode:
    يُستخدم لترميز نصوص لاستخدامها في عناوين URL.

    jinja
    {% set my_string = "Hello, World!" %} {{ my_string|urlencode }}

    سيقوم هذا بترميز السلسلة لتصبح “Hello%2C+World%21″، جاهزة للاستخدام في عنوان URL.

  5. التحكم في التكرار باستخدام loop:
    Jinja يوفر متغيرات loop للتحكم في عمليات التكرار في القوالب، مما يتيح للمطورين الوصول إلى معلومات مثل عدد الدورات الحالية وإجمالي الدورات.

    jinja
    {% for item in my_list %} {{ loop.index }}: {{ item }} {% endfor %}

    في هذا المثال، يُظهر loop.index رقم الدورة الحالية، مما يسهم في إنشاء تكرارات متقدمة.

  6. قوالب مضمنة (Templates Include):
    يمكن لمطوري Jinja تقسيم قوالبهم إلى قوالب فرعية وإدراجها باستخدام {% include 'template.html' %}. هذا يعزز إعادة الاستخدام ويجعل القوالب أكثر تنظيمًا.

    jinja
    {# main_template.html #} {% include 'header.html' %}

    Content Goes Here

    {% include 'footer.html' %}

    في هذا المثال، يتم إدراج قوالب header.html و footer.html في main_template.html.

توفر Jinja هذه المفاهيم والمزيد لتمكين المطورين من بناء قوالب ديناميكية وقوية. باستخدام هذه المرشحات والمفاهيم المتقدمة، يمكن تحقيق تحولات معقدة على البيانات وتكوين قوالب تلبي احتياجات التطبيق بشكل دقيق وفعّال.

زر الذهاب إلى الأعلى