تنظيم المشروع

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

تعريفات

دعنا نُعرِف بعض المصطلحات قبل أن نبدأ بهذه الوحدة.

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

حزمة (Package): يشير هذا المصطلح إلى حزمة البايثون التي تحتوي على الشيفرة البرمجية لتطبيقك. سأتحدث أكثر حول إعداد تطبيقك كحزمة في هذا الفصل، ولكن حالياً كل ما عليك معرفته هو أنَّ الحزمة تمثل دليل فرعي من المستودع.

وحدة (Module): تمثل الوحدة ملف بايثون واحد يُمكن استيراده من أي ملف بايثون آخر. الحزمة بالأساس هي عدة وحدات مُحزمِة معاً.

ملاحظة

أساليب التنظيم

وحدة مفردة

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

app.py
config.py
requirements.txt
static/
templates/

شيفرة التطبيق ستوضع في الملف app.py كما هو موضح في المثال أعلاه.

حزمة

عندما تعمل على مشروع أكثر تعقيداً بقليل، التنظيم باستخدام وحدة مفردة لن يفي بالغرض. فستحتاج لتعريف صنوف (Classes) للنماذج (Models) والاستمارات (Forms)، وسينمزج كل هذا مع الموجهات والإعدادات. كل هذا يُمكن أن يثبط عملية التطوير. يمكنك جمع المكونات المختلفة لتطبيقك في مجموعة من الوحدات المترابطة، أي في حزمة، لحل هذه المشكلة.

config.py
requirements.txt
run.py
instance/
    config.py
yourapp/
    __init__.py
    views.py
    models.py
    forms.py
    static/
    templates/

يسمح لك هذا التنظيم - الموضح أعلاه - جمع المكونات المختلفة لتطبيقك بطريقة منطقية. بحيث يتم جمع تعريفات الصنوف للنماذج في الملف models.py، وتعريفات الموجهات في الملف views.py، ويتم تعريف الاستمارات في الملف forms.py (يوجد فصل كامل حول الاستمارات لاحقاً).

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

الملف الشرح
runs.py هذا هو الملف الذي يتم استدعاؤه لبدء خادم التطوير. يحصل هذا الملف على نسخة من التطبيق من حزمتك ويقوم بتشغيلها. لن يتم استخدام هذا الملف في وضع الإنتاج، ولكنك سترى الكثير من الأميال منه في وضع التطوير.
requirements.txt يسرد هذا الملف جميع الحزم التي يعتمد عليها تطبيقك. قد تملك ملفات منفصلة لاعتماديات وضع التطوير والإنتاج.
config.py يحتوي هذا الملف على متغيرات الإعداد التي يحتاجها تطبيقك.
/instance/config.py يحتوي هذا الملف على متغيرات الإعداد التي لا ينبغي أن يتم تتبعها باستخدام نظام التحكم بالإصدارات. بما فيها: مفاتيح الواجهات البرمجية وروابط قاعدة البيانات التي تحتوي على كلمات المرور. كما يحتوي أيضاً على متغيرات خاصة بحالة معينة من تطبيقك. على سبيل المثال، قد تستخدم DEBUG = False في ملف config.py، بينما تستخدم DEBUG = True في ملف instance/config.py على جهازك المحلي لعملية التطوير. وفي حين أن هذا الملف يتم قراءته بعد قراءة الملف config.py، فسيتم تجاهل القيمة الموجودة في الملف config.py واستبدالها ب DEBUG = True.
/yourapp/ هذه هي الحزمة التي تحتوي على مكونات تطبيقك.
/yourapp/__init__.py هذا هو الملف الذي يستهل مشروعك ويجمع جميع المكونات المختلفة معاً.
/yourapp/views.py هنا حيث يتم تعريف الموجهات. قد يتم فصل الموجهات إلى حزمة بحد ذاتها (yourapp/views) تحتوي على دوال عرض متعلقة مجموعة معاً في وحدات.
/yourapp/models.py هنا حيث تُعرَّف نماذج تطبيقك. قد يتم فصل هذا الملف إلى وحدات متعددة بنفس طريقة فصل الملف views.py.
/yourapp/static الدليل الذي يحوي ملفات CSS و Javascript والصور وغيرها من الملفات التي تريدها أن تظهر للعموم بواسطة تطبيقك. ويمكن الوصول إليها من الرابط yourapp.com/static افتراضياً.
/yourapp/templates هنا حيث سيتم وضع قوالب جينجا الخاصة بتطبيقك.

المُخطّطات

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

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

الخلاصة

  • استخدام الوحدة المفردة لتنظيم تطبيقك هي فكرة جيدة للمشاريع السريعة.
  • استخدام حزمة لتنظيم مشروعك هي فكرة جيدة للمشاريع المكونة من دوال عرض، ونماذج، واستمارات، وغيرها من المكونات.
  • تعد المُخطّطات طريقة رائعة لتنظيم المشاريع المؤلفة من مكونات مختلفة.

results matching ""

    No results matching ""