شارك هذا المقال:
أهلا عزيزي القارئ! نعلم أنك مهتم بعالم البرمجة والتكنولوجيا وكل ما يخصهما، ولذلك في هذا المقال نعرض لك مرجعا شاملا عن إطار العمل جانغو الذي يستخدم في تطوير مواقع وتطبيقات الويب بلغة بايثون. طبقا لإحصائية من SimilarTech في مايو 2019، كان يوجد 77,278 موقعا تم إنشاؤهم باستخدام جانغو والعدد الحالي يقرب من 80,000!
لمعرفة جانغو، يجب عليك ان تعرف ما هي بايثون أولا، ولذلك نبدأ المقال بمقدمة بسيطة عن بايثون ونوفر المصادر التي يمكنك الولوج إليها لمعرفة المزيد عن بايثون.
تابع معنا لتتعرف على هذا الإطار العبقري!
أثناء كتابة تطبيق بريد إلكتروني بلغة C حوالي عام 1990، واجه Guido van Rossum بعض الصعوبات في صياغة برنامج تسجيل الدخول نظرًا لعدم وجود أنظمة موجودة لإدارة عمليات تسجيل الدخول وكلمات المرور في ذلك الحين. شعورًا بأن برنامج تسجيل الدخول هذا كان سيشمل الكتابة كثيرًا بلغة C ، توصل روسوم إلى فكرة بايثون. تم تقديم بايثون لأول مرة للجمهور في عام 1991، وكانت اللغة الأكثر شعبية في عام 2018 وفقًا لاستطلاع Stack Overflow السنوي.
وفقًا لمؤسسة Python Software Foundation : "بايثون هي لغة برمجة مفسرة (interpreted) كائنية التوجه (Object-oriented) عالية المستوى (high-level) ومكتوبة ديناميكيا (dynamically typed)."
مقال مرتبط : البايثون: تعرف على تاريخ هذه اللغة ومميزاتها وأشهر استخداماتها
تعد جانغو (Django) إطار عمل (Framework) ويب تابع للغة بايثون عالي المستوى ويتيح التطوير السريع لمواقع الويب الآمنة والقابلة للصيانة. إطار العمل هو ليس أكثر من مجموعة من الوحدات التي تجعل التطوير أمرا أكثر سهولة. يتم تجميع هذه الوحدات معًا، ويسمح لك هذا بإنشاء تطبيقات أو مواقع ويب من مصدر معروف ومتناسق، بدلاً من كتابة الأكواد من الصفر. تعد جانغو مجانية ومفتوحة المصدر (open-source)، ولها مجتمع مزدهر ونشط، ووثائق رائعة (documentation)، والعديد من الخيارات للدعم المجاني والمدفوع.
بعبارات بسيطة، جانغو عبارة عن مجموعة من المكونات الجاهزة التي تساعدك على إنشاء مواقع ويب بسرعة ببنية عملية ونظيفة. عند تصميم مواقع الويب، غالبًا ما يحتاج المطورون إلى نفس المكونات لمهام مثل توثيق المستخدمين، تحميل الملفات، تنفيذ أنظمة إدارة محتوى (Content Management Systems – CMS)، الخ…
بايثون وجانغو متشابكان، ولكنهما ليسا متشابهين. بايثون هي لغة برمجة تُستخدم للعديد من التطبيقات المختلفة: الذكاء الاصطناعي، التعلم الآلي، تطبيقات سطح المكتب، وما إلى ذلك. من ناحية أخرى، تعد جانغو إطار عمل لتطوير تطبيقات الويب الكاملة وتطوير الخادم. إذن، نجد أن جانغو تستخدم في مجال واحد بشكل مطلق وهو مجال تطوير تطبيقات الويب، وهي تتميز في ذلك المجال.
يمكنك إنشاء موقع ويب من البداية بلغة بايثون الأساسية والوصول إلى الحل بنفسك، أو يمكنك تصميم تطبيقك عن طريق جانغو باستخدام أجزاء من التعليمات البرمجية المكتوبة مسبقًا لك من مجتمع برمجي محترف.
تم تطوير جانغو في البداية بين عامي 2003 و 2005 من قبل فريق ويب كان مسؤولاً عن إنشاء مواقع الصحف وصيانتها. بعد إنشاء عدد من المواقع، بدأ الفريق في تحليل وإعادة استخدام الكثير من الرموز وأنماط التصميم المشتركة. تطورت هذه الشفرة المشتركة إلى إطار عام لتطوير الويب، والذي تم فتحه كمشروع "Django" في يوليو 2005.
استمرت جانغو في النمو والتحسن، من أول إصدار هام (1.0) في سبتمبر 2008 حتى الإصدار 4.0 الذي تم إصداره مؤخرًا (2022). أضاف كل إصدار وظائف جديدة وإصلاحات للأخطاء، بدءًا من دعم الأنواع الجديدة من قواعد البيانات ومحركات القوالب والتخزين المؤقت (Cache)، إلى إضافة وظائف وفئات العرض "العامة" التي تقلل مقدار التعليمات البرمجية التي يتعين على المطورين الكتابة لها عند القيام بالمهام البرمجية.
الشمولية:
توفر جانغو تقريبًا كل ما قد يرغب المطورون في القيام به "خارج الصندوق". نظرًا لأن كل ما تحتاجه هو جزء من "منتج" واحد، فإن كل شيء يعمل معًا بسلاسة، ويتبع مبادئ تصميم متسقة، ويحتوي على وثائق شاملة ومحدثة.
تعدد الاستعمالات:
يمكن استخدام جانغو لبناء أي نوع من مواقع الويب تقريبًا - بدءًا من أنظمة إدارة المحتوى ومواقع wiki لنشر المعلومات والمعرفة، وصولاً إلى الشبكات الاجتماعية والمواقع الإخبارية. يمكنها العمل مع أي إطار عمل من جانب العميل (client-side framework)، ويمكنها تقديم المحتوى بأي تنسيق تقريبًا (بما في ذلك HTML و RSS feeds و JSON و XML). داخليًا، بينما توفر خيارات لأي وظيفة تقريبًا قد ترغب فيها (على سبيل المثال، العديد من قواعد البيانات الشائعة ومحركات القوالب وما إلى ذلك)، يمكن أيضًا توسيعها لاستخدام مكونات أخرى إذا لزم الأمر.
الأمان:
تساعد جانغو المطورين على تجنب العديد من الأخطاء الأمنية الشائعة من خلال توفير إطار عمل مصمم "للقيام بالأمور الصحيحة" لحماية الموقع تلقائيًا. على سبيل المثال، توفر جانغو طريقة آمنة لإدارة حسابات المستخدمين وكلمات المرور، وتجنب الأخطاء الشائعة مثل وضع معلومات الجلسة (session information) في ملفات تعريف الارتباط (cookies) حيث تكون معرضة للخطر (بدلاً من ذلك تحتوي ملفات تعريف الارتباط على مفتاح فقط، ويتم تخزين البيانات الفعلية في قاعدة البيانات) أو تخزين كلمات المرور مباشرةً بدلاً من تجزئة (hashing) كلمة المرور.
كلمة المرور التي يتم تجزئتها هي قيمة ذات طول ثابت يتم إنشاؤها عن طريق إرسال كلمة المرور من خلال وظيفة تجزئة التشفير. يمكن لـجانغو التحقق مما إذا كانت كلمة المرور المدخلة صحيحة عن طريق تشغيلها من خلال وظيفة التجزئة ومقارنة الناتج بقيمة التجزئة المخزنة. ومع ذلك، نظرًا لطبيعة الوظيفة "أحادية الاتجاه" ، حتى إذا تم اختراق قيمة التجزئة المخزنة، فمن الصعب على المهاجم معرفة كلمة المرور الأصلية. تتيح جانغو الحماية ضد العديد من الثغرات بشكل افتراضي، بما في ذلك حقن SQL، والترميز عبر المواقع (cross-site scripting)، وتزوير الطلبات عبر المواقع، واختراق النقرات.
القابلية للتوسع:
تستخدم جانغو بنية "لا شيء مشترك" قائمة على المكونات (كل جزء من الهيكل مستقل عن الأجزاء الأخرى، وبالتالي يمكن استبداله أو تغييره إذا لزم الأمر). يعني وجود فصل واضح بين الأجزاء المختلفة أنه يمكن توسيع نطاق عدد زيارات الموقع المتزايدة عن طريق إضافة أجهزة على أي مستوى: خوادم التخزين المؤقت أو خوادم قواعد البيانات أو خوادم التطبيقات. نجحت بعض المواقع الأكثر ازدحامًا في توسيع نطاق جانغو لتلبية مطالبهم (Instagram و Disqus، على سبيل المثال لا الحصر).
القابلية للصيانة:
تمت كتابة كود جانغو باستخدام مبادئ وأنماط التصميم التي تشجع على إنشاء كود قابل للصيانة وإعادة الاستخدام. على وجه الخصوص، فإنه يستخدم مبدأ لا تكرر نفسك (Don’t repeat yourself) لذلك لا يوجد تكرار غير ضروري، مما يقلل من كمية الكود. تروج جانغو أيضًا لتجميع الوظائف ذات الصلة في "تطبيقات" قابلة لإعادة الاستخدام، وفي المستوى الأدنى، تقوم بتجميع التعليمات البرمجية ذات الصلة في وحدات – على غرار نمط وحدة التحكم في عرض النموذج (Model View Controller – MVC).
القابلية للتنقل:
تمت كتابة جانغو بلغة بايثون، والتي تعمل على العديد من المنصات. هذا يعني أنك لست مرتبطًا بأي منصة خادم معينة، ويمكنك تشغيل تطبيقاتك على العديد من إصدارات Linux و Windows و macOS. علاوة على ذلك، فإن Django مدعومة جيدًا من قبل العديد من مزودي استضافة الويب، الذين غالبًا ما يوفرون بنية تحتية محددة ووثائق لاستضافة مواقع Django خصيصا.
المساعدة في تحسين محرك البحث (Search-engine optimization):
تقدم جانغو عددًا من أدوات تحسين محرك البحث (SEO) المفيدة. باستخدام إطار عمل Django SEO، يمكن للمطورين تقليل وقت تحميل الصفحة باستخدام القوالب المخزنة مؤقتًا وضغط ملفات CSS و JavaScript. حتى أن هناك أداة لإدارة ملف robots.txt. بشكل عام، تتجاوز إمكانيات نظام إدارة محتوى جانغو توقعات العديد من المتخصصين في تحسين محركات البحث، مما يثبت أنها إحدى أفضل الأطر المستخدمة لتحسين محركات البحث.
مفتوحة المصدر والدعم المجتمعي الضخم:
جانغو هي إطار عمل مجاني ومفتوح المصدر متاح على Github. هناك ما يقرب من 2000 مساهم وينضم الكثيرون كل يوم. إنها مدعومة من قبل المجتمع الضخم من المطورين ويتم تحديث الكود دائمًا من قبل المطورين الذين يستخدمونه. يتم أيضًا تقديم الكثير من المكتبات الجديدة من قبل المجتمع لحل المشكلات المتعلقة بالترميز التي غالبًا ما يواجهها المطورون أثناء إنشاء المشروع.
إذا كنت تبحث عن كيفية عمل شيء معين في جانغو، فستكون هناك احتمالية كبيرة بأن مشكلتك قد تم حلها بالفعل بواسطة مطور آخر في المجتمع وستحصل على الحل بسهولة بمجرد ظهور مشكلتك. يتوفر الكثير من القوائم البريدية والمدونات والوثائق واللقاءات وورش العمل والموارد الأخرى عبر الإنترنت لهذا الإطار.
سهولة التعلم:
نعلم جميعًا أن لغة بايثون بسيطة وسهلة القراءة وسهلة التعلم. يختار الكثير من المبتدئين هذه اللغة كلغة برمجة أولية للترميز نظرًا لبساطتها ومنحنى التعلم السهل. تستخدم الكليات والجامعات هذه اللغة لتعليم البرمجة للطلاب. ليس المبتدئين فقط ولكن خبراء التكنولوجيا يستخدمون هذه اللغة لعلوم البيانات والتعلم الآلي وفي مجالات أخرى مختلفة. بايثون هي لغة مستقرة إلى حد كبير وترث جانغو الكثير من الفوائد الرئيسية لبايثون. إذا نظرنا إلى العناصر الأساسية في جانغو، تتم كتابة جميع الملفات والأكواد بلغة بايثون. لذا فإن تعلم جانغو سهل أيضًا إذا كنت تعرف كيفية البرمجة بلغة بايثون.
ليست مناسبة للمشاريع الصغيرة:
تعد جانغو مناسبة أكثر للمشروعات التي تهدف إلى التوسع بشكل كبير، وتستغرق الكمية الضخمة من الأكواد الكثير من وقت معالجة الخادم وعرض النطاق الترددي (Bandwidth). من الممكن أيضًا أن يرتبك مطوري البرامج الصغيرة من كثرة الوظائف الفريدة لـ Django. هناك خيارات أفضل لذلك النوع من المطورين، مثل Ruby on Rails، وهو إطار أسهل بكثير لإنشاء تطبيقات أصغر.
تحتاج إلى معرفة الكثير:
قد تكون المشكلة في ذلك أن جانغو تكون كبيرة جدًا في بعض الأحيان، ويتطلب هذا منك معرفة خطة الهيكل بأكمله قبل أن تتمكن من البدء في بنائه بالفعل. ومع ذلك، يمكن للمجموعة الواسعة من موارد الدعم والمجتمع تسهيل ذلك، حيث توجد إرشادات ووثائق يجب اتباعها.
منحنى تعلم حاد:
لدى جانغو منحنى تعليمي حاد للغاية. قد لا يبدو هذا واضحًا في البداية، ولكن هناك الكثير من الميزات والوظائف التي تستغرق وقتًا لفهمها. سيكون هذا صعبًا بشكل خاص لأولئك الذين لم يعملوا مع Python من قبل. جانغو سهلة التعلم، ولكن من الصعب إتقانها لأنها شاسعة.
التثبيت:
توفر جانغو جميع مكتباتها وحزمها مع بعضهم البعض، مما يعني أن هناك حاجة لتثبيتهم دفعة واحدة لكي تعمل بكفاءة، وهذا في بعض الأحيان يزعج المستخدمين.
التحكم:
لا تسمح جانغو للمطورين بتعلم حزم وأدوات بايثون، وبدلاً من ذلك، تركز على توفير الأكواد الجاهزة. لدى جانغو مجموعة معينة من الملفات والتي تحتاج فقط إلى تعلمها. يجد البعض هذه ميزة بينما لا يجدها الآخرون كذلك.
قام المطورون بالفعل بإنشاء العديد من النماذج التي يمكن إعادة استخدامها في مشاريع مختلفة، مما يسمح للمستخدمين باستخدامها فقط بدلاً من إجراء أي تغييرات.
لذلك بالنسبة لعشاق البرمجة، فإن اللعب بالرموز الحالية ليس خيارًا. أثناء العمل مع جانغو، عليك فقط التركيز على مشروعك، بدلاً من بعض البرمجة المعقدة.
- إنشاء منصات مالية بميزات تحليلية كاملة مثل تحمل المخاطر ومعدل النجاح، والمزيد.
- أنظمة إدارة علاقات العملاء (Customer Relationship Management – CRM) للتعامل مع التواصل في الشركات
- أنظمة إدارة الوثائق
- نظام تقييم الملكية للعقارات
- المنصات المالية ذات القدرات اللازمة لحساب عوامل الخطر، أو احتمالية تحقيق الهدف
- منصات للتعامل مع المشكلات القانونية بما في ذلك التحديثات المتعلقة بالتأجير وشروط الرهن العقاري
- وسيلة لبناء قناة اتصال بين طرفين مثل المستخدم والعميل
بالإضافة إلى ذلك، توفر جانغو أيضًا طرقًا لتطوير ميزات منفصلة حيث تحب بعض الشركات بناء مشاريعها بناءً على أطر عمل متعددة، مثل:
- أدوات تحليل البيانات أو المولدات القائمة على الخوارزميات
- آليات التحقق (القائمة على الصور)
- نظام البريد الإلكتروني لإرسال إخطارات إلى عدة مستخدمين في وقت واحد
- أنظمة التصفية ذات المنطق المتقدم ديناميكيًا
- منصة لإدارة صناديق الاستثمار
- تطوير أنظمة الحجز الإلكتروني (Booking systems).
- منصات التسوق الإلكتروني
- منصات التواصل الاجتماعي
يعتبر اطار عمل جانغو من أشهر و أكثر اطر العمل قوة عندما يأتي الأمر لتطوير الويب, و ما يميزه ارتباطه بلغة بايثون الأمر الذي يسهل اضافة خدمات ال Machine Learning & AI في منتجك!