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

قبل أن نتحدث عن أطور العمل نتحدث عن الإطار الماورائي ويزجي WSGI فهو معيار PEP وضعه مجتمع بايثون لتوحيد طرق عمل خوادم بايثون.

http://legacy.python.org/dev/peps/pep-0333/

http://legacy.python.org/dev/peps/pep-0444/

وكما ترون تأتي الأشياء في مجتمع بايثون عبر التقدم بتحسن مقترح يتم قبوله لاحقا كمعيار. ولا تترك هكذا عبثا. إطار WSGI الماورائي يقول باختصار أن تطبيق الويب هو كائن قابل للاستدعاء (دالة عادية بسيطة أو كائن معقد يمكن استدعاؤه لأنه يتصرف كدالة من خلال __call__) هذه الدالة تستقبل الطلبات على شكل كذا وكذا وتعيد الرد عليه على شكل كذا وكذا... أي إطار عمل يجب أن يحقق هذا المعيار يمكن استضافته بأي خادم ويزجي ويمكن تركيب التطبيق معا بتسلسل واحد فواحد أو بتداخل واحد داخل واحد (مثلا يمكن تركيب تطبيق المقالات داخل تطبيق المصادقة وإدارة المستخدمين دون أن يعلم أي منهما عن الآخر)

أطر العمل في بايثون هي

  • إطار جانغو djangoproject.com وهو الأكثر نضوجا وهو يتكون من فلسفة واضحة ومخدوم بشكل كبير ويتكون من عناصر مترابطة جدا لايمكن استبدالها بسهولة أو استخدامها في أطر أخرى

    • ففيه ORM لقواعد البيانات (تكتب نموذج بياناتك في بايثون ليس SQL على شكل فئات وكائنات)
    • وفيه واجهة ويب لإدارة كل السجلات بمجرد عمل ال ORM.
    • له نظام قوالب مصمم خصيصا وفق فلسفتهم "الحكيمة"
    • فيه نظام جاهز لإدارة المستخدمين مع واجهة
    • وله الكثير من الإضافات.
    • يتكون تطبيق الويب من شجرة من الكود يمكن استهلالها عبر أداة "السقالة" ولا يوجد تطبيق كامل من ملف واحد
  • إطار الأهرامات وهو مشروع لإعادة كتابة إطار قديم اسمه بايلونز pylonsproject.org الإطار كما كل الأطر عدا جانغو يعتمد على مكونات من مشاريع مستقلة يمكن استخدام تلك المكونات خارج إطار العمل ويمكن استبدال أي منها بمكون آخر

    • كل أركانه ومكوناته مفحوصة عبر فحوصات الوحدة unit testing
    • يمكن أن يتكون تطبيق الويب من ملف واحد http://docs.pylonsproject.org/projects/pyramid/en/latest/narr/firstapp.html#firstapp-chapter
    • ويمكن إنشاء مشروع كبير متعدد الملفات بطريقة السقالة scaffold http://docs.pylonsproject.org/projects/pyramid/en/latest/tutorials/wiki2/installation.html#making-a-project
    • ORM من sqlalchemy
    • هناك مشروع سقالة جاهز يدعم mongodb https://pypi.python.org/pypi/pyramid_mongodb
    • يمكن استعمال عدد كبير من محركات القوالب مثل jinja2 و mako و chameleon
  • إطار Turbo Gears 2 كان في السابق مبني فوق إطار pylons

    • يمكن عمل تطبيق من ملف واحد http://turbogears.readthedocs.org/en/latest/#single-file-application
    • يمكن عمل تطبيقات كبيرة عبر "السقالة" http://docs.pylonsproject.org/projects/pyramid/en/latest/tutorials/wiki2/definingviews.html#adding-templates
    • يستخدم مكونات خارجية مثل قوالب Genshi و sqlalchemy و repoze.who
    • يمكن استبدال تلك المكونات بمكونات أخرى

وقد نتحدث في مقالة أخرى عن الأطر المصغرة