# جانغو (إطار عمل ويب)

جانغو (بالإنجليزية: Django؛ تنطق JANG-goh)‏ هو منصة برمجية لتطبيقات الإنترنت حر ومفتوح المصدر مكتوب بلغة البرمجة بايثون، والذي يتبع أسلوب تطوير نمط-قالب-عرض (بالإنجليزية: MVT: Model-Template-Views). طُوّر أصلًا لإدارة مواقع إخبارية تديرها «شركة العالم» (بالإنجليزية: The World Company)‏ وأصدر للعموم في يوليو 2005 تحت رخصة بي إس دي. في يونيو 2008 أعلن عن إنشاء مؤسسة برنامج جانغو التي ستتولى تطوير جانغو في المستقبل.
هدف جانغو الأساسي تسهيل إنشاء مواقع الوب المعقدة المعتمدة على قواعد البيانات. تركز المنصة على قابلية إعادة الاستخدام وقابلية التوصيل (Pluggability) للعناصر، زتكويد أقل، وخفض الاقتران، وتطوير سريع، ومبدأ لا تكرر نفسك. تستعمل البايثون في كل المنصة حتى بالنسبة للإعدادات، الملفات وأنماط البيانات. وتوفر كذلك خيار استعمال واجهة إدارة قواعد البيانات (إنشاء - قراءة - تحديث - حذف)
بعض المواقع المعروفة التي تستخدم جانغو بما فيها بي بي إس، إنستغرام، مؤسسة موزيلا، واشنطن تايمز، ديسكاس، بيت باكيت $^{[لغاتأخرى]}$‏, Nextdoor. وبنترست، الذي انتقل إلى استخدام فلاسك.

## تاريخ

أنشأت جانغو في خريف 2003، حين بدأ عاملان (أدريان هولوفاتي وسيمون ويلسون) في جريدة لورانس جورنال-وورلد باستخدام لغة بايثون في بناء تطبيقات. تم توظيف جاكوب كابلان-موس في تطوير جانغو قبيل انتهاء فترة تدريب سيمون ويلسون. تم نشرها تحت رخصة بي إس دي في يوليو 2005. تم تسمية المنصة تيمنا بالجيتاريست الفرنسي جانغو راينهارت.
في يونيو 2008 تم الإعلان عن إنشاء منظمة جانغو للبرمجيات (DSF: Django Software Foundation) والتي تعنى بتطوير والحفاظ على المنصة في المستقبل.

## المميزات
### القطع (العناصر)

بالرغم من امتلاك المنصة نظام تسمية، مثل تسمية الكائنات التي تولد إستجابات اتش تي تي بي(عروض - Views)، فإن قلب منصة جانغو يمكن أن يعتبر كمعمارية MVC.
تعمل جانغو بوجود ثلاثة عناصر أساسية:
* موجه علائقي للكائنات (ORM: Object Relational Mapper) والذي يكون وسيط بين أنماط بيانية المعرفة كفئات بايثون وقواعد البيانات العلائقية (النمط - Model).
* نظام معالجة طلبات اتش تي تي بي مع نظام قولبة ويب (عرض - View).
* مرسل محدد موقع الموارد مبني على أسلوب التعابير النمطية (متحكم - Controller).
كذلك يحتوي لب المنصة على أدوات أخرى:
* خادم ويب خفيف ومستقل بغرض البرمجة والتجريب.
* نظام تحويل ومصادقة للإستمارات، الذي يعمل على ترجمة استمارات اتش تي ام ال إلى قيم ملائمة للتخزين في قاعدة البيانات.
* نظام قولبة يستعمل مفهوم الوراثة المقترض من البرمجة الكائنية التوجه.
* منصة تخبأة التي تستعمل عدة أساليب للتخبأة.
* دعم لتصنيفات البرمجيات الوسيطة التي يمكنها التدخل في عدة مراحل من مراحل معالجة الطلبات، ومباشرة وظائف مخصصة.
* نظام إرسال داخلي الذي يسمح لمختلف عناصر البرنامج بالإتصال فيما بينها عن طريق إشارات معرفة مسبقا.
* نظام تدويل، يضم ترجمات عناصر جانغو إلى العديد من اللغات.
* نظام تحويل يمكنه إنشاء وقراءة إكس إم إل أو/و جايسون من حالات جانغو النموذجية (Model Instances).
* نظام لتوسيع قدرات محرك القوالب.
* واجهة لمنصة اختبارات الوحدة الأساسية في بايثون.

### التطبيقات المحزمة

توزيعة جانغو الأساسية تحزم أيضا مجموعة من التطبيقات في رزمة (المساهمات - Contrib) من ضمنها:
* نظام مصادقة قابل للتوسعة.
* واجهة إدارة ديناميكية.
* أدوات لتوليد تلقيمات ويب لـ آر إس إس وأتوم.
* منصة لتشغيل عدة مواقع كل بمحتواه وتطبيقاته الخاصة تحت تعيينة جانغو واحدة.
* أدوات لتوليد خرائط المواقع.
* نظام مبني للتخفيف من عدة هجمات ويب مثل: تزوير الطلب عبر المواقع، برمجة عابرة للمواقع، كسر كلمات السر، حقن اس كيو ال. معظمها مفعل تلقائيا.
* منصة لإنشاء تطبيقات نظم المعلومات جغرافية.

### قابلية التمدد

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

### التطابق مع الخوادم

يمكن لجانغو العمل بالإشتراك مع آباتشي، انجينكس باستخدام ويزغي (واجهة بوابة خادم ويب، جي يونيكورن (Gunicorn) أو شيروكي باستعمال فلوب - flup (وحدة مكتبية من بايثون)

### مقارنة جانغو بمنصات تطوير ويب أخرى

يتم مقارنة جانغو في الأغلب مع العديد من لغات ومنصات تطوير الويب مثل بي اتش بي، فلاسك، نود.جي إس، وغيرها.

## تاريخ النسخ

يقوم فرق جانغو من فترة إلى فترة بتعيين إصدارات معينة كـ «دعم طويل الأمد». ستحصل هذه الإصدارات على إصلاحات أمنية وبيانية مضمونة لمدة معينة من الزمن، في الغالب ثلاث سنوات، بغض النظر عن سرعة الإصدارات بعدها.

## المجتمع

يوجد مؤتمر نصف سنوي لمطوري جانغو ومستخدميه يدعى «جانغوكون-DjangoCon» والذي تم إقامته منذ سبتمبر 2008. يتم اقامته سنويا في أوروبا في شهر ماي أو جوان، بالمقابل يقام آخر في الولايات المتحدة في أوت أو سبتمبر في مدن عديدة.

## نقل إلى لغات برمجة أخرى

قام مبرمجون بنقل محرك جانغو للقوالب إلى عدة لغات برمجية أخرى، وبالتالي توفير دعم متعدد المنصات لا بأس به. بعضها يعتبر نقلا مباشرا وأخرى بالرغم من تأثرها بجانغو ومفاهيمها، إلا أنها أخذت الحرية في الخروج عن تصميم جانغو:
* ليكويد - Liquid: لغة البرمجة روبي.
* تمبلايت:: سويغ - Template::Swig: لغة البرجمة بيرل.
* تويغ - Twig: لغة البرمجة بي اتش بي وجافاسكريبت.
* جينجا - Jinja: للغة بايثون.
* إرلي دي تي ال - ErlyDTL: لإرلانج

## منصات إدارة محتوى مبنية على جانغو

منصة جانجو قادرة على بناء أنظمة إدارة محتوى كاملة، على كل حال يوجد مشاريع أنظمة إدارة محتوى مخصصة مبنية وموسعة لجانغو. هذه بعض أشهرها:
* جانغو سي ام اس - DjangoCMS.
* واغتايل - Wagtail.
* ميزانين - Mezzanine.

## أنظر أيضا

* باي لونز
* روبي أون ريلز
* ويب-تو-باي
* فلاسك
* بوتل

## مراجع

* ↑ مذكور في: جنو جيكس. معرف جنو جيكس: python-django. الوصول: 23 فبراير 2021.
* 1 2 وصلة مرجع: http://www.djangobook.com/en/2.0/chapter01.html#django-s-history.
* ↑ الوصول: 8 يناير 2017. وصلة مرجع: https://api.github.com/repos/django/django.
* ↑ "The django Open Source Project on Open Hub: Languages Page". أهلوه. اطلع عليه بتاريخ 2018-07-18.
* ↑ "Release 5.1.2". 8 أكتوبر 2024. اطلع عليه بتاريخ 2024-10-21.
* ↑ وصلة مرجع: https://github.com/django/django/blob/master/LICENSE. الوصول: 2 سبتمبر 2016.
* ↑ "The django Open Source Project on Open Hub: Licenses Page". أهلوه. اطلع عليه بتاريخ 2018-07-18.
* ↑ What does “Django” mean, and how do you pronounce it? نسخة محفوظة 10 سبتمبر 2017 على موقع واي باك مشين.
* 1 2 "FAQ: General | Django documentation | Django". docs.djangoproject.com. مؤرشف من الأصل في 2022-08-14. اطلع عليه بتاريخ 2022-08-20.
* ↑ LJWorld.com / About us نسخة محفوظة 23 مايو 2017 على موقع واي باك مشين.
* 1 2 "Django FAQ". Lawrence Journal-World. مؤرشف من الأصل (HTML) في 2006-07-20. اطلع عليه بتاريخ 2008-04-01.
* 1 2 Announcing the Django Software Foundation نسخة محفوظة 24 سبتمبر 2017 على موقع واي باك مشين.
* ↑ "Design philosophies | Django documentation | Django". docs.djangoproject.com. مؤرشف من الأصل في 2022-05-04. اطلع عليه بتاريخ 2022-08-20.
* ↑ "Django ORM". www.fullstackpython.com (بالإنجليزية). Archived from the original on 2022-08-17. Retrieved 2022-08-20.
* ↑ "20 Creative Websites Running Django". مؤرشف من الأصل في 2013-06-14.
* ↑ "What Powers Instagram: Hundreds of Instances, Dozens of Technologies". مؤرشف من الأصل في 2014-10-06.
* ↑ "Python". Mozilla Developer Network. مؤرشف من الأصل في 2012-02-08. اطلع عليه بتاريخ 2016-04-30.
* ↑ Opensource.washingtontimes.com. Retrieved on 2014-05-30. نسخة محفوظة 15 مارس 2016 على موقع واي باك مشين.
* ↑ "Scaling Django to 8 Billion Page Views". مؤرشف من الأصل في 2016-04-13.
* ↑ "DjangoSuccessStoryBitbucket – Django". مؤرشف من الأصل في 2016-04-20. اطلع عليه بتاريخ 2016-04-30.
* ↑ "The anti-Facebook: one in four American neighborhoods are now using this private social network". The Verge. مؤرشف من الأصل في 2018-12-21. اطلع عليه بتاريخ 2016-06-16.
* ↑ "What is the technology stack behind Pinterest?". مؤرشف من الأصل في 2023-07-11. اطلع عليه بتاريخ 2016-04-30.
* ↑ "What is the history of the Django web framework? Why has it been described as "developed in a newsroom"?". Quora (بالإنجليزية). Archived from the original on 2023-07-11. Retrieved 2022-08-20.
* ↑ "FAQ: General | Django documentation | Django". docs.djangoproject.com. مؤرشف من الأصل في 2022-08-14. اطلع عليه بتاريخ 2022-08-20.
* ↑ "Security in Django | Django documentation | Django". docs.djangoproject.com. مؤرشف من الأصل في 2022-05-14. اطلع عليه بتاريخ 2022-08-20.
* ↑ "Best Basic Security Practices (Especially with Django)". Coffee on the Keyboard (بالإنجليزية). 17 Jul 2012. Archived from the original on 2022-03-15. Retrieved 2022-08-20.
* ↑ "What is a reusable app? — django-reusable-app-docs 0.1.0 documentation". django-reusable-app-docs.readthedocs.io. مؤرشف من الأصل في 2022-03-28. اطلع عليه بتاريخ 2022-08-20.
* ↑ "Django Packages : Reusable apps, sites and tools directory". djangopackages.org. مؤرشف من الأصل في 2022-08-03. اطلع عليه بتاريخ 2022-08-20.
* ↑ "Cherokee Web Server | Cookbook Setting up Django | Cherokee Documentation". cherokee-project.com. مؤرشف من الأصل في 2022-04-08. اطلع عليه بتاريخ 2022-08-20.
* ↑ "Django's release process | Django documentation | Django". docs.djangoproject.com. مؤرشف من الأصل في 2022-07-10. اطلع عليه بتاريخ 2022-08-20.

## وصلات خارجية

* جانغو على موقع Open Hub (الإنجليزية)
* جانغو على موقع Free Software Directory (الإنجليزية)
* صفحة مشروع جانغو الرئيسية
* بوابة برمجة الحاسوب
* بوابة برمجيات
* بوابة برمجيات حرة