البرمجة

أهم مرشحات Jinja القياسية

أهم المرشحات المتوفرة بشكل قياسي في محرك القوالب Jinja – الجزء الثالث

محرك القوالب Jinja يعد من الأدوات القوية والمرنة التي يعتمد عليها الكثير من مطوري الويب في بناء تطبيقاتهم باستخدام لغة بايثون، خصوصاً مع أُطُر عمل مثل Flask وDjango (عبر مكتبات متكاملة). يعتمد Jinja بشكل كبير على مفهوم القوالب التي تحتوي على تعليمات برمجية ضمن نصوص HTML أو غيرها من الملفات النصية، حيث تُحوّل هذه القوالب إلى صفحات جاهزة للعرض من خلال ربطها بالبيانات البرمجية المُقدمة من تطبيقات بايثون.

تُعتبر المرشحات (Filters) في Jinja من الأدوات الجوهرية التي تسمح بمعالجة وتعديل القيم أو المتغيرات أثناء عملية العرض، دون الحاجة لتعديل الكود البرمجي في بايثون مباشرة. تكمن أهمية المرشحات في قدرتها على تنفيذ عمليات تنسيق، تحويل، أو حتى حسابية بطريقة بسيطة وسلسة من داخل القالب نفسه.

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


1. مرشح replace

يعتبر مرشح replace من المرشحات الأساسية التي تستخدم لاستبدال جزء معين من نص بسلسلة نصية أخرى. يتيح هذا المرشح إمكانية تعديل النصوص بسهولة داخل القالب دون الحاجة لتغيير البيانات الأصلية في كود بايثون.

الاستخدام

jinja
{{ "مرحبا بالعالم" | replace("العالم", "الجميع") }}

النتيجة

مرحبا بالجميع

توضيح

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


2. مرشح random

يوفر مرشح random وسيلة لاختيار عنصر عشوائي من قائمة أو سلسلة نصية. يُستخدم هذا المرشح غالباً في القوالب التي تتطلب عرض عناصر بشكل عشوائي، كاختيار صورة خلفية، رسالة تحية أو نصوص مميزة.

الاستخدام

jinja
{{ ["تفاحة", "برتقال", "موز"] | random }}

النتيجة

scss
(أي من العناصر الثلاثة بشكل عشوائي)

توضيح

يتطلب هذا المرشح وجود قائمة أو مجموعة بيانات قابلة للتكرار، ويعيد أحد عناصرها عشوائياً. مفيد في حالات جعل تجربة المستخدم أكثر تنوعاً وتفاعلية.


3. مرشح length

مرشح length واحد من أكثر المرشحات استخداماً حيث يعيد عدد عناصر القائمة أو طول النص. هذا المرشح يتيح التحقق من حجم البيانات في القالب دون الحاجة لاستدعاء دوال بايثون داخل القالب.

الاستخدام

jinja
{{ "مرحبا" | length }}

النتيجة

5

توضيح

يعمل مع السلاسل النصية، القوائم، القواميس، وحتى مجموعات البيانات الأخرى. يُستخدم بكثرة لتحديد عدد العناصر التي سيتم عرضها أو إظهار رسائل خاصة عند خلو مجموعة البيانات.


4. مرشح sort

يقوم مرشح sort بترتيب عناصر قائمة أو مجموعة بيانات وفقاً لترتيب تصاعدي. يمكن استخدامه لترتيب الأسماء، الأرقام، أو أي مجموعة بيانات قابلة للترتيب.

الاستخدام

jinja
{{ [5, 2, 9, 1] | sort }}

النتيجة

csharp
[1, 2, 5, 9]

توضيح

يمكن استخدام هذا المرشح مع القوائم التي تحتوي على عناصر قابلة للمقارنة مباشرة. كما يمكن استخدامه مع المعامل reverse لعكس الترتيب.


5. مرشح unique

يعمل هذا المرشح على إزالة العناصر المكررة من قائمة معينة، مما يضمن عرض بيانات فريدة فقط في القالب. مفيد عند التعامل مع مجموعات بيانات تضم تكرارات غير مرغوبة.

الاستخدام

jinja
{{ [1, 2, 2, 3, 4, 4] | unique }}

النتيجة

csharp
[1, 2, 3, 4]

توضيح

يتم تطبيقه عادة على القوائم لجعلها تحتوي على عناصر مميزة فقط، وهذا يسهل التعامل مع البيانات الكبيرة أو المجمعة من مصادر متعددة.


6. مرشح urlencode

مرشح urlencode يقوم بتحويل نص إلى صيغة صالحة لاستخدامها في عناوين URL عبر تشفير الأحرف الخاصة. هذا أمر حيوي عند إنشاء روابط تحتوي على معلمات ديناميكية من النصوص أو المدخلات التي قد تتسبب في مشاكل إذا لم تُشفر بشكل صحيح.

الاستخدام

jinja
{{ "مرحبا بالعالم!" | urlencode }}

النتيجة

perl
%D9%85%D8%B1%D8%AD%D8%A8%D8%A7+%D8%A8%D8%A7%D9%84%D8%B9%D8%A7%D9%84%D9%85%21

توضيح

يساعد هذا المرشح في حماية الروابط وضمان سلامة التنقل في المواقع التي تعتمد على المتغيرات النصية في عناوين URL.


7. مرشح escape

أحد أهم المرشحات لحماية صفحات الويب من هجمات حقن الشفرات، يقوم escape بتحويل الأحرف الخاصة في النصوص إلى رموز HTML آمنة، مما يمنع تنفيذ أي كود غير مرغوب فيه في المتصفح.

الاستخدام

jinja
{{ "" | escape }}

النتيجة

php-template
<script>alert('hack');</script>

توضيح

المرشح ضروري جداً عند عرض محتوى يتم إدخاله من المستخدمين أو مصادر غير موثوقة، ليحول النص إلى شكل آمن يعرض كما هو بدون تنفيذ أي تعليمات برمجية.


8. مرشح trim

يستخدم هذا المرشح لإزالة الفراغات الزائدة من بداية ونهاية النص، مما يحسن تنسيق المحتوى ويجعل العرض أكثر احترافية.

الاستخدام

jinja
{{ " نص مع فراغات " | trim }}

النتيجة

نص مع فراغات

توضيح

التعامل مع النصوص التي تحتوي على فراغات غير مرغوبة هو أمر شائع جداً في القوالب، ومرشح trim يوفر حلاً بسيطاً وفعالاً لذلك.


9. مرشح capitalize

يقوم هذا المرشح بتحويل الحرف الأول من النص إلى حرف كبير مع الحفاظ على باقي النص كما هو. يُستخدم غالباً في تنسيق العناوين أو الكلمات التي تحتاج لبدء بحرف كبير.

الاستخدام

jinja
{{ "مرحبا بالعالم" | capitalize }}

النتيجة

مرحبا بالعالم

توضيح

في اللغات التي لا تعتمد على الحروف الكبيرة والصغيرة (كاللغة العربية)، قد لا يظهر تأثير ملحوظ، لكن في اللغات التي تعتمد على ذلك (كالإنجليزية) يكون المرشح ذا فائدة كبيرة.


10. مرشح default

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

الاستخدام

jinja
{{ user_name | default("زائر") }}

النتيجة

زائر

توضيح

عند عدم وجود قيمة للمتغير user_name، يقوم المرشح بعرض كلمة “زائر” بدلاً من ترك الفراغ أو ظهور خطأ في القالب. يمكن تعديل القيمة الافتراضية حسب السياق.


جدول ملخص لأهم المرشحات ومزاياها

المرشح الوصف الاستخدام النموذجي
replace استبدال نص بنص آخر تصحيح أو تعديل النصوص
random اختيار عنصر عشوائي من قائمة عرض محتوى عشوائي
length حساب طول النص أو عدد عناصر القائمة التحقق من حجم البيانات
sort ترتيب عناصر القائمة تصاعدياً تنظيم عرض البيانات
unique إزالة التكرار من القائمة ضمان تميز البيانات
urlencode تشفير النص لروابط URL تأمين الروابط من الأحرف الخاصة
escape تحويل النص إلى رموز HTML آمنة حماية من هجمات حقن الشفرات
trim إزالة الفراغات من بداية ونهاية النص تحسين تنسيق النصوص
capitalize تحويل الحرف الأول لحرف كبير تنسيق العناوين أو الكلمات
default تعيين قيمة افتراضية للمتغير الفارغ منع ظهور قيم فارغة أو أخطاء

الخلاصة

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

تطبيق هذه المرشحات بشكل مدروس يعزز جودة وأداء التطبيقات ويبني قوالب أكثر احترافية، مما ينعكس إيجابياً على تجربة المستخدم وفاعلية الموقع أو التطبيق البرمجي. كما أن الفهم العميق لكل مرشح وكيفية استخدامه يفتح أمام المطورين آفاقاً واسعة لتخصيص القوالب بما يلبي متطلبات المشاريع المختلفة بسهولة وكفاءة.


المصادر والمراجع