ما المقصود بـ Django؟
Django هو برنامج يمكنك استخدامه لتطوير تطبيقات الويب بسرعة وكفاءة. تحتوي معظم تطبيقات الويب على العديد من الوظائف الشائعة، مثل المصادقة واسترجاع المعلومات من قاعدة البيانات وإدارة ملفات تعريف الارتباط. على المطورين ترميز وظائف مماثلة في كل النصوص البرمجية لتطبيقات الويب التي يكتبونها. يجعل Django مهمتهم أسهل من خلال تجميع الوظائف المختلفة في مجموعة كبيرة من الوحدات القابلة لإعادة الاستخدام، والتي تسمى إطار عمل تطبيق الويب. يستخدم المطورون إطار عمل الويب Django بهدف تنظيم تعليماتهم البرمجية وكتابتها بشكل أكثر كفاءة، وتقليل الوقت المستغرق لتطوير الويب بشكل كبير.
لماذا يختار مطورو الويب Django؟
يوجد العديد من أطر الويب في السوق. تمت كتابة Django بلغة Python، وهو أحد أطر الويب العديدة المكتوبة بلغة Python. إلا أنه في الغالب يفضل المطورون إطار الويب Django عن الأطر الأخرى للأسباب التالية.
سرعة التطوير
يتسم الإطار Django بحسن التنظيم والسهولة في التثبيت والتعلم، وبالتالي يمكنك البدء في غضون ساعات. أنشأ مصممو Django الإطار لتحقيق السرعة في تنفيذ أي بنية ويب في التعليمة البرمجية. إنه يدعم السرعة في التطوير والتنظيف، بجانب تصميمه العملي الواقعي. يُمكنك كتابة التعليمة البرمجية في أسطر قليلة فقط لأن Django يوفر بنيةً جاهزةً للاستخدام في العديد من مهام تطوير الويب الشائعة، مثل ما يلي:
- مصادقة المستخدم
- إدارة المحتوى
- خرائط الموقع
- موجزات RSS
مناسب من حيث التكلفة
Django هو أحد مشروعات Python المجانية مفتوحة المصدر الذي يضم مجتمعًا نشطًا يُقيّم البرمجيات ويحافظ عليها. تعمل منظمة غير ربحية تُسمى مؤسسة Django Software Foundation على الترويج للإطار Django وتقديم الدعم في استخدامه والحفاظ عليه. تعقد هذه المؤسسة بصفة منتظمة لقاءات وتجمعات وفعاليات مجتمعية تشجع المطورين الآخرين على تقييم مشروع Django والمساهمة فيه. والنتيجة هي إطار ويب عالي الجودة غني بالميزات ومجاني الاستخدام.
شائع
الآلاف من المشروعات مفتوحة المصدر والمواقع الشهيرة تستخدم Django، ومنها ما يلي:
- Mozilla Firefox
- ناشيونال جيوغرافيك (National Geographic)
بسبب شهرته، يستمر الإطار في التطور ولديه بنية أساسية قوية خاصة بالدعم. يقدم عدد كبير من الأفراد والشركات دعمًا مجانيًا ومدفوعًا لأي تحديات تطوير قد تواجهها عند استخدامك Django.
ما كيفية عمل Django؟
يتكون أي تطبيق ويب من جزأين: التعليمة البرمجية للخادم والتعليمة البرمجية للعميل. يكون لدى العميل أو زائر موقع الويب متصفح. عندما يقوم العميل أو زائر موقع الويب بكتابة عنوان URL في المتصفح، فإنه يرسل طلبًا إلى جهاز خادم الويب الذي يتم تشغيل تطبيق الويب عليه. يقوم الخادم بمعالجة الطلب باستخدام قاعدة بيانات ويرسل المعلومات مرةً أخرى إلى العميل في صورة استجابة. تقوم التعليمة البرمجية للعميل بعرض المعلومات للزائر في صورة صفحة ويب.
يدير Django التعليمة البرمجية الخاصة بنظام الطلبات والاستجابة هذا عن طريق استخدام بنية MVT (النموذج-العرض-القالب).
النموذج
تعمل نماذج Django كواجهة بين قاعدة البيانات والتعليمة البرمجية للخادم. النماذج هي المصدر القطعي الوحيد للمعلومات حول بياناتك. نماذج البيانات هذه تحتوي على الحقول والعمليات الأساسية التي تشترطها أنت للتفاعل مع قاعدة البيانات الخاصة بك. وبالتالي تقوم نماذج Django بتحويل جداول قاعدة البيانات إلى فئات أو كائنات في تعليمة برمجية بلغة Python. وهذا يسمى التعيين العلائقي للكائنات.
وبشكلٍ عام، يتم تعيين كل نموذج إلى جدول قاعدة بيانات واحد ويكون له سمات تمثل حقول قاعدة البيانات. على سبيل المثال، إذا كان موقع الويب يشتمل على تفاصيل الموظف، فيمكن تمثيله على النحو التالي:
- جدول موظفين به حقول لأسماء الموظفين والعناوين.
- نموذج موظفين يسمى Class Employee (فئة الموظف) به اثنتان من السمات، أو اثنان من حقول النموذج يُسميان Name (الاسم) وAddress (العنوان).
العرض
تقوم طرق عرض Django بمعالجة الطلب عن طريق استخدام النماذج. يمكنك كتابة وظيفة طريقة عرض لكل نوع من الطلبات يمكن لزوار موقع الويب إرسالها إلى موقع الويب. يمكن لوظيفة طريقة العرض أن تتناول الطلب كإدخال وتقوم بإرجاع استجابة، والتي قد تكون تعليمة برمجية خطأ، أو صورة، أو ملف، أو أي نوع من البيانات.
يحتوي Django على مخطِّط عناوين URL، أو مُرسِل عناوين URL، وهي ميزة تقوم بتعيين وظائف طرق العرض إلى عناوين URL. يجب عليك إنشاء ملف مخطِّط عناوين URL تكتب فيه أنماط عناوين URL كما هو موضح أدناه.
urlpatterns = [
path('employee/name', views.employee_name),
path('employee/<int:year>/', views.year_archive),
]
على سبيل المثال، إذا كنت تريد أن يقوم زوّار موقع الويب بعرض قائمة بجميع موظفيك في سنة معينة، فأنت تقوم بإعداد مسار عنوان URL رقم الموظف/سنة employee/year number، وتكتب وظيفة عرض Django المقابلة year_archive. عندما يكتب زائر موقع الويب "yourwebsitename.com/employee/2020" في المتصفح، تحدث الخطوات التالية:
- يتجه الطلب إلى تطبيق الويب.
- يأخذ إطار الويب Django رقم السنة واسم وظيفة طريقة العرض من مخطِّط عناوين URL.
- يقوم بتشغيل وظيفة طريقة العرض year_archive للعام 2020.
- يستخدم Year_archive نموذج الموظف للحصول على جميع بيانات الموظف من قاعدة البيانات لعام 2020.
- يرسل إطار الويب Django البيانات مرةً أخرى كاستجابة.
القالب
تُدير قوالب Django عرض صفحة الويب في المتصفح. نظرًا لأن معظم صفحات الويب موجودة بلغة ترميز النص التشعبي (HTML)، يمكنك كتابة التعليمة البرمجية لقالب Django بأسلوب مشابه للغة HTML. يحتوي ملف القالب على بعض المكونات:
- الأجزاء الثابتة من مخرجات HTML النهائية، مثل الصور والأزرار والعناوين.
- بناء جملة خاص يصف كيفية إدراج محتوى ديناميكي أو بيانات ديناميكية تتغير مع كل طلب.
المكونات التالية تُشكل نظام قوالب Django.
لغة القالب
لغة القالب هي لغة البرمجة التي تستخدمها في كتابة التعليمة البرمجية لقالب HTML. يدعم Django لغة قوالب Django خاصة به وله بديل شائع يُسمى Jinja2.
محرك القالب
يقوم محرك القالب بمعالجة ملف القالب وإنشاء مخرجات HTML النهائية. يحتوي على البيانات من الاستجابة الموجودة في هذه المخرجات.
فمثلًا، عندما يطلب زائر موقع الويب معلومات الموظف، فإن قالب Django يقوم بملء صفحة الويب التي يراها الزائر بعنوان موقع الويب وجدول يحتوي على أسماء وعناوين جميع الموظفين وزر يقول Next (التالي).
ما الوحدات الأخرى التي يمكنك استخدامها في Django؟
على الرغم من أن بنية MVT (النموذج-العرض-القالب) تحدد الهيكل الأساسي لأي تطبيق، فإن Django تتضمن العديد من الوحدات الأخرى لتحسين موقع الويب الخاص بك. وإليك بعض الأمثلة أدناه.
النماذج
معظم مواقع الويب تتطلب نماذج، لمهام مثل التسجيل والدفع أو لجمع المعلومات من زائر الموقع. يوفر Django العديد من الأدوات والمكتبات التي يمكنك استخدامها في إدارة نماذج موقع الويب الخاص بك. يمكنه تبسيط وأتمتة معالجة النماذج ويمكنه القيام بذلك بشكل أكثر أمانًا مما لو كنت تكتب التعليمة البرمجية بنفسك.
يعالج Django معالجة النماذج بثلاث طرق:
- إنشاء النموذج من خلال تجهيز البيانات وإعادة هيكلتها للعرض
- التحقق من صحة النماذج عن طريق التحقق من نماذج HTML بجانب العميل
- معالجة النماذج من خلال تلقي البيانات المرسلة
مصادقة المستخدم
يجب أن تقوم مواقع الويب العصرية بمصادقة المستخدمين ومنحهم التفويض. تتحقق المصادقة من هوية المستخدم، بينما التفويض يقرر ما يمكن للمستخدم الذي تمت مصادقته أن يفعله على الموقع. يدير Django المصادقة في الاستخدامات المختلفة.
- حسابات المستخدمين
- أذونات وعلامات "نعم أو لا" تسمح للمستخدمين بأداء مهام معينة على موقع الويب
- مجموعات من عدة حسابات مستخدمين ذات أذونات مماثلة
- جلسات مستخدم مستندة إلى ملفات تعريف الارتباط
توفر أيضًا نظام تجزئة لكلمات المرور قابل للتكوين وأدوات لتقييد المحتوى في النماذج وطرق العرض.
إدارة الموقع
موقع إدارة Django يُيسر توفير صفحة إدارة لموقعك. يمكن لمسؤولي الموقع استخدام الصفحة في إنشاء نماذج البيانات على موقعك أو تحريرها أو عرضها.
هل Django إطار ذو رأي؟
إننا نطلق بشكل غير رسمي على أطر الويب "ذات الرأي" عندما تفرض هذه الأطر عملية على مطوري الويب. يكون لهذه الأطر رأي أو طريقة مناسبة يتعين على المطورين من خلالها إنجاز مهام معينة. على سبيل المثال، تدعم الأطر ذات الرأي عادةً التطوير الفعّال في قطاعات معينة من خلال الاحتفاظ بوثائق تفصيلية حول مهام التطبيقات المتعلقة بذلك القطاع.
ومن ناحية أخرى، فإن الأطر التي بلا رأي لديها قيود أقل على كيفية دمج مكونات MVT (النموذج-العرض-القالب) المختلفة معًا. وفي حين أنها تتسم بمرونة أكبر، فإنها تسبب مضاعفات في تنظيم التعليمات البرمجية لأن المطورين المختلفين يمكنهم استخدام أساليب متنوعة لنفس المهمة.
Django هو إطار ذات رأي نوعًا ما. يوفر مجموعةً واسعةً من المكونات ويتضمن وثائق حول كيفية التعامل مع الكثير من مختلف أنواع مهام تطوير الويب. يمكن للمطورين استخدام بنية Django المفصولة للاختيار من بين مجموعة من الخيارات، بل إن هذه البنية تضيف دعمًا لخيارات جديدة يحتاجونها.
ما المقصود بأمان Django؟
يستهدف مرتكبو الجرائم السيبرانية في الغالب تطبيقات الويب للوصول إلى معلومات تسجيل دخول المستخدم والبيانات المالية وغيرها من المعلومات الحساسة. يوفر إطار الويب Django العديد من الميزات لحماية تطبيقات الويب الخاصة بك وحماية المستخدمين. يمكنك تجنب الكثير من الأخطاء الأمنية الشائعة عن طريق اتباع أفضل ممارسات Django. وإليك بعض الأمثلة أدناه.
حماية البرمجة النصية عبر المواقع
تحدث هجمات البرمجة النصية عبر المواقع (XSS) عندما يقوم مرتكبو الجرائم السيبرانية بإدراج تعليمة برمجية ضارة في متصفحات مستخدمي موقع الويب. يُمكنهم مهاجمة المستخدمين عن طريق خداع تطبيق الويب الخاص بك بعدة طرق، مثل ما يلي:
- تخزين برامج نصية ضارة في قاعدة البيانات الخاصة بك بحيث يرسل الخادم تعليمة برمجية ضارة عن غير قصد في استجابته التالية.
- خداع المستخدمين كي ينقروا فوق رابط يتسبب في تشغيل تعليمة برمجية ضارة للعميل، وليس تشغيل التعليمة البرمجية الخاصة بك، في متصفح المستخدم.
على سبيل المثال، قد يحتوي قالب Django على {{name}}، الذي يعرض النص الذي يُدخله المستخدم في حقل الاسم في ملفه التعريفي. يقوم مرتكب الجرائم السيبرانية باختراق الجلسة وتغيير الاسم إلى تعليمة برمجية مثل <script>alert('hello')</script>. يتغير القالب إلى {{<script>alert('hello')</script>}}.
يتم تشغيل هذه التعليمة البرمجية الآن في متصفح المستخدم بحيث تظهر الرسالة النصية "Hello" في رسالة منبثقة على شاشته. في حين أن هذا المثال بسيط، يمكنك أن ترى كيف يمكن لمرتكب الجرائم السيبرانية إدراج برامج نصية معقدة للتحكم في كمبيوتر المستخدم الخاص بك.
يحميك Django من مثل هذه الهجمات عن طريق الهروب تلقائيًا أو تجاهل رموز وأحرف معينة مثل < و >، والتي تشير إلى تعليمة برمجية ضارة، من إدخال المستخدم.
الحماية من الوصول غير المصرح به
تحدث هجمات تزوير الطلبات عبر المواقع (CSRF) عندما يسرق المتسللون بيانات اعتماد المستخدمين ويرسلون طلبات غير مصرح بها إلى تطبيق الويب الخاص بك. يحتوي Django على حماية مضمنة ضد معظم أنواع هجمات تزوير الطلبات عبر المواقع (CSRF) في وحدة Django CSRF. تعمل هذه الوحدة عن طريق إرسال قيمة سرية لكل مستخدم عند تسجيل الدخول لأول مرة.
تتضمن طلبات العميل الجديدة القيمة السرية كدليل على أن العميل هو من يدعي أنه العميل الحقيقي. ونظرًا لأن متصفح المستخدم المصرح له هو فقط الذي يعرف القيمة السرية، يمكن لـ Django رفض الطلبات تلقائيًا إذا كانت تأتي من جهاز آخر يتظاهر بأنه المستخدم. يجب عليك تنشيط إعداد وحدة Django CSRF حتى تعمل.
الحماية من حقن SQL
يستخدم مرتكبو الجرائم السيبرانية حقن SQL لإدراج تعلمية برمجية بلغة SQL في قاعدة البيانات الخاصة بك عن طريق استخدام طلبات HTTP مثل POST. يمكن للتعليمة البرمجية الضارة سرقة بياناتك الأصلية أو حذفها. يحل Django هذه المشكلة في التصميم نفسه. تُحفظ البيانات المرسلة من قبل المستخدم، والتي تسمى المعلمات، بطريقة منفصلة عن استعلام قاعدة البيانات حتى تصل إلى طبقة النموذج. يمكن لنموذج Django بعد ذلك الهروب من الرموز والأحرف الخطرة عند إنشاء تعليمة برمجية للاستعلام.
الحماية من خلال دعم المجتمع
الحماية التي يوفرها Django تتجاوز ميزات الأمان المضمنة. نظرًا لأن Django مفتوح المصدر، فإن العديد من المطورين ذوي الخبرة يستخدمون وحدات Django ويقيمونها. إن عمليات الاختبار الشاملة تزيد من موثوقية التعليمة البرمجية لـ Django ويمنع ترك ثغرات أمنية عرضية بلا حل.
ما المقصود بقابلية Django للتوسع؟
في تطوير مواقع الويب، تشير قابلية التوسع إلى قدرة موقع الويب على التعامل مع العديد من طلبات العملاء في نفس الوقت. تتسم مشروعات Django بالقابلية الشديدة للتوسع وبقدرتها على التعامل مع آلاف الطلبات. يمكنك توسعة نطاق تطبيق Django بالطرق التالية.
الأجهزة
صمم فريق Django إطار الويب بهدف استخدام الأجهزة في نظامك بكفاءة. باستخدام "بنية لا شيء مشترك"، يفصل Django المكونات مثل طبقة قاعدة البيانات (النماذج) وطبقة التطبيق (طرق العرض). يمكنك إضافة أجهزة على أي مستوى بدون التأثير على بقية النظام. يمكنك إضافة المزيد من خوادم قواعد البيانات أو خوادم التطبيقات إلى نظامك، وسيستخدم Django هذه الموارد بكفاءة للتعامل مع العديد من الزوار.
التخزين المؤقت
التخزين المؤقت هو عملية حفظ بعض بيانات صفحات الويب على خادم العميل أو على خوادم وسيطة بحيث يمكن لتطبيق Django معالجة الطلبات بشكل أسرع وزيادة الحجم. يقدم Django نظام تخزين مؤقت قوي بمستويات مختلفة من التخزين المؤقت:
- يمكنك تخزين موقع الويب كله تخزينًا مؤقتًا.
- يمكنك تخزين بعض مخرجات وظائف طرق العرض تخزينًا مؤقتًا.
- يمكنك التخزين المؤقت لمحتوى معين يستغرق وقتًا طويلاً في إنشائه.
تعمل مشروعات Django أيضًا بشكل جيد مع ذاكرات التخزين المؤقت التابعة لجهات خارجية. يمكنك كتابة التعليمة البرمجية التي تقدم نصائح وتلميحات حول ذاكرات التخزين المؤقت هذه وتخبرهم بأي جزء من تطبيقك تريد تخزينه مؤقتًا.
كيف تدعم AWS تطبيقات الويب الخاصة بـ Django؟
AWS Elastic Beanstalk هي خدمة سهلة الاستخدام على المستخدم تختص بنشر نطاق تطبيقات وخدمات الويب وتوسعتها التي تم تطويرها باستخدام تقنيات مثل Django وPython وJava و.NET وPHP وNode.js وRuby وGo وDocker على خوادم مألوفة مثل Apache وNginx وPassenger وIIS.
تدعم Elastic Beanstalk مطوري Django بالطرق التالية:
- تقوم بتحميل تعليمة Django البرمجية ويقوم Elastic Beanstalk تلقائيًا بمعالجة النشر.
- يقوم Elastic Beanstalk بنشر وتشغل البنية التحتية وإدارة حزمة التطبيق (المنصة) بالنسبة لك، لذلك لا يستلزم عليك قضاء وقت أو خبرة تطوير.
- تقوم Beanstalk Elastic بتغيير حجم تطبيقك تلقائيًا بالزيادة أو النقصان بناءً على احتياج تطبيقك باستخدام إعدادات Auto Scaling القابلة للتعديل.
ابدأ في نشر تطبيق Django إلى Elastic Beanstalk عن طريق إنشاء حساب AWS مجاني اليوم.