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


عبدالهادي الديوري

مُقدّمة

بعد أن تعرّفنا على كيفيّة استخدام المُرشّحات في قوالب HTML، سنتعرّف في هذه الفقرة على بعض من أهم المُرشّحات المُتوفّرة في مُحرّك القوالب Jinja، والتّي يُمكنك استعمالها مُباشرة مع مشاريع Flask الخاصّة بك.

main2.png

المُرشّح default لتوفير قيمة افتراضيّة

في بعض الأحيان، يُمكن أن يكون متغيّرٌ غير مُتوفّرٍ في القالب، لكن يُمكنك توفير قيمة افتراضيّة لتظهر في هذه الحالة.

كمثال على ذلك، لنفترض بأنّك تعرض عنوان مقال باستخدام السّطر التّالي:

<h1> {{ title }} </h1>

في حالة لم يكن المُتغيّر title مُعرّفا فقد يُشوّه ذلك مظهر الصّفحة أو من المُمكن أن تحدث أخطاء غير مُتوقّعة، يُمكننا عوضا عن ذلك عرض النّص Title Not Found باستخدام السّطر التّالي عوضا عن السّطر السّابق:

<h1> {{ title | default("Title Not Found") }} </h1>

يُمكننا الآن التّأكّد من أنّ الجملة Title Not Found تظهر فقط في حالة لم يكن المُتغيّر title مُعرّفا، وذلك عبر تعريفه قبل استدعائه باستخدام السّطر التّالي:

{% set title = "A title for a post" %}

تأكّد فقط من تعريف المُتغيّر في سطر يسبق السّطر الذي تستدعي فيه قيمته.

عند تعريف المُتغيّر ستظهر قيمته بشكل عادي، أمّا إن لم يكن مُعرّفا فالجملة “Title Not Found” ستظهر عوضا عن ذلك.

المُرشّح capitalize لتحويل الحرف الأول من كلمة إلى حرف كبير

في بعض اللغات اللاتينيّة، من المُهمّ أن تجعل الحرف الأول من بعض الأسماء حرفا كبيرا، فمثلا كتابة اسم على شكل Ali طريقة تعبير أفضل من كتابته على شكل ali.
ولتحويل كل قيمة مُعيّنة إلى هذه الحالة يُمكننا استعمال المُرشّح capitalize كما يلي:

<h1> {{ "academy" | capitalize() }} </h1>

نتيجة المثال السّابق ستكون الكلمة academy مكتوبة على شكل Academy، لاحظ بأنّ الحرف الأول أصبح كبيرا وبقيّة الأحرف عاديّة.

المُرشّح title لتحويل قيمة نصيّة إلى طريقة كتابة العناوين

لا شك أنّك لاحظت بأنّ مواقع الأخبار الانجليزيّة والمُدوّنات تكتب عناوين مقالاتها بحيث يكون الحرف الأول من كل كلمة حرفا كبيرا.

فعوضا عن كتابة عنوان بالطّريقة المُواليّة:

how to use the flask framework to develop web applications

فإنّ الطّريقة الصّحيحة هي بكتابته كما يلي:

How To Use The Flask Framework To Develop Web Applications 

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

يكفي استخدام المُرشّح title لتحويل أي عنوان كيف ما كان إلى الشّكل الصّحيح، والتّالي مثال على كيفيّة استخدام هذا المُرشّح:

<h1> {{ "how to use the flask framework to develop web applications" | title() }} </h1>

بالإضافة إلى كل من upper، capitalize و title فالمُرشّح lower يقوم بتحويل أي سلسلة نصّيّة إلى أحرف صغيرة.

المُرشّح first لعرض أول عنصر من مجموعة عناصر

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

المثال التّالي يُوضّح كيفيّة استخدام المُرشّح first:

{% set list = ["One", "Two", "Three"] %}

<h1> {{ list | first() }} </h1>

في المثال أعلاه، نستخدم الكلمة المفتاحيّة set لتعريف مُتغيّر باسم list والذي يحمل بدوره قائمة من ثلاثة قيم، أمّا في السّطر الذي يليه، فنُطبّق المُرشّح first على القائمة list التّي أنشأناها قبل قليل.

إذا عدت إلى الصّفحة الخاصّة بالمُرشّحات الآن، فستُلاحظ بأنّ ما بداخل الوسم <h1> هو القيمة One فقط، وذلك لأنّها أول قيمة في مجموعة القيم المُتواجدة داخل القائمة list.

المُرشّح float لتحويل الأعداد إلى أعداد عشريّة

هذا المُرشّح يعمل بنفس طريقة عمل الدّالة float() في لغة بايثون، إذ يقوم بتحويل أي عدد مهما كان نوعه إلى عدد عشري.

يُمكنك استخدامه كما يلي:


{{ 10 | float() }}

ستُلاحظ بأنّ العدد 10 قد حوّل ليُصبح على شكل 10.0.
المُرشّح يعمل مع السّلاسل النّصيّة كذلك، لذا فالمثال التّالي سيقوم بإنتاج 10.0 كذلك:

{{ "10" | float() }}

إذا لم يكن بالمقدور تحويل القيمة إلى عدد عشري فستظهر القيمة 0.0 عوضا عن ذلك.

يُمكنك تجربة القيمة الافتراضيّة بمُحاولة تحويل سلسلة نصيّة إلى عدد عشري بمثال مُشابه لما يلي:

{{ "Hello Word" | float() }}

ستُلاحظ بأنّ النّتيجة هي 0.0، وهي القيمة الافتراضية التّي تظهر إذا ما كانت القيمة غير قابلة للتّحويل إلى عدد عشري.

يُمكنك تغيير القيمة الافتراضيّة 0.0 إلى أي قيمة أخرى عبر تمرير القيمة الافتراضيّة الجديدة إلى المُعامل default كما يلي:

{{ "Hello Word" | float(default="Error: value cannot be converted into a floating point number") }}

بعد هذا التّغيير، ستجد بأنّ نتيجة تحويل قيمة لا يُمكن تحويلها إلى عدد عشري هي الجملة “Error: value cannot be converted into a floating point number” ويُمكنك تغيير هذه الرّسالة كيفما تشاء.

المُرشّح int لتحويل القيم إلى أعداد صحيحة

يعمل هذا المٌرشّح بطريقة مُشابهة لكيفيّة عمل المُرشّحfloat، إذ أنّ المُرشّح int يُحوّل أي قيمة إلى عدد صحيح، ويُمكنك استخدامه كما يلي:

{{ 10.0 | int() }}

وكما الحال مع المُرشّحfloat، فإنّ المُرشّح int يُحوّل أي قيمة غير قابلة إلى التّحويل إلى عدد صحيح إلى القيمة 0، ويُمكنك تعديل هذه القيمة الافتراضيّة عبر تمرير القيمة الجديدة إلى المُعامل default كما يلي:

{{ "Hello Word" | int(default="Error: value cannot be converted into an integer number") }}

المُرشّح join لضمّ عناصر مجموعة من القيم وجمعها لتكون قيمة واحدة

في لغة بايثون البرمجيّة، يُمكننا جمع عناصر قائمة أو مجموعة من السّلاسل النّصيّة لتصبح سلسلة نصيّة واحدة باستخدام التّابع join.

في مُحرّك القوالب Jinja، يُمكننا استخدام المُرشّح join للوصول إلى نفس النّتيجة.

يُمكنك استخدام المُرشّح join كما يلي:

{{ [1, 2, 3] | join()  }}

ستُلاحظ بأنّ النّتيجة في المُتصفّح هي 123.

إليك مثالا آخر:

{{ ["One", "Two", "Three"] | join()  }}

هذه المرّة ستكون النّتيجة القيمة OneTwoThree.

يُمكنك كذلك الفصل بين العناصر بفاصل عبر تمريره إلى المُرشّح كمُعامل.

المثال الأول:

{{ [1, 2, 3] | join('|')  }}

في هذا المثال، ستُلاحظ بأنّ النّتيجة هي 1|2|3 عوضا عن 123 لأنّنا وضعنا فاصلا بين عناصر القائمة.

المثال الثّاني:

{{ ["One", "Two", "Three"] | join("-")  }}

هذه المرّة ستُلاحظ بأنّ النّتيجة هي One-Two-Three.

المُرشّح last

المُرشّح last يعمل بطريقة مُعاكسة للمُرشّح first، إذ أنّ هذا الأخير يعرض أول قيمة من مجموعة قيم، والمُرشّح last يعرض آخر قيمة من المجموعة.

المثال التّالي يُوضّح كيفيّة استعمال المُرشّح last لعرض آخر قيمة من القائمة names:

{% set names = ['Kamal', 'Ali', 'Ahmed', 'Khaled'] %}


<h1> {{ names | last()  }} </h1>

إذا طبّقت المثال أعلاه، فسيتوجّب أن تحصل على الاسم Khaled كنتيجة لأنّه آخر عنصر من القائمة names.

المثال التّالي يجمع كلّا من المُرشّح first والمُرشّح last:

{% set names = ['Kamal', 'Ali', 'Ahmed', 'Khaled'] %}

<h1> First: {{ names | first()  }} </h1>
<h1> Last: {{ names | last()  }} </h1>

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

First: Kamal
Last: Khaled

ختاما

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





تفاعل الأعضاء


لا توجد أيّة تعليقات بعد



يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن