
دعونا نساعد المطورين على معرفة ما إذا كان إطار عمل Django مناسبًا لمشروعهم التالي. ومن المرجح - مناسبة.
لا تستوعب لغة برمجة معينة أو إطار عمل لمجرد أنك استخدمتها في مشروعك السابق ، أو ببساطة لأنك على دراية بها. حتى لا تتم الأمور.
قبل الشروع في مشروع جديد ، يجب عليك تقييم اللغة أو الإطار الأفضل لك لتحقيق النتيجة المرجوة. ما هو الأكثر أهمية بالنسبة لك؟ الأمن ، وسرعة التنمية ، والتدرجية ، براعة ، الدعم؟
من الأفضل اتخاذ قرار مستنير قبل البدء في العمل بدلاً من التوبة على عجل في وقت لاحق (أو الأسوأ من ذلك ، تعليق العكازات على المشروع في عملية التنفيذ - بسبب حقيقة أنك لم تهتم بدعمه مقدمًا).
لقد عملت مع العديد من التقنيات لسنوات عديدة ، وتعاملت مع كل من تطوير الهاتف المحمول وتطوير الويب ، وأعتقد أن Django يقدم مجموعة كاملة من الميزات التي لا توجد في أي إطار ويب آخر.
أنا أفهم هذا هو بيان بصوت عال. دعني أبرر ذلك.
"لدى Django الكثير من المواقع التي يتم استخدامها بشكل أكثر نشاطًا ، وخاصة Instagram و Pinterest. حتى Facebook يستخدم Django للعديد من أدواته. ولد جانغو في بيئة للنشر ، لذلك ليس من المستغرب أن يتم استخدام هذا الإطار في مواقع مثل واشنطن بوست ومجلة سميثسونيان. " - اميت آشفيني ، نائب رئيس التسويق في Zibtek
منظر عام: عند استخدام Django
إذا كانت بعض النقاط أدناه على الأقل متعلقة بك (ولا توجد نقاط في القائمة لا توافق عليها بشدة) ، فمن المحتمل أن يكون Django مناسبًا جيدًا لمشروعك.
- تحتاج إلى تطوير تطبيق ويب أو واجهة برمجة تطبيقات الواجهة الخلفية.
- يجب أن تعمل بسرعة ، وأن تنشر بسرعة وتجري تغييرات على المشروع أثناء عملك.
- بشكل افتراضي ، يجب حماية التطبيق من نقاط الضعف والهجمات الأكثر شيوعًا ، لا سيما: CSRF ، و SQL injection ، و XSS ، و clickjacking ، إلخ.
- في أي وقت ، قد تكون هناك حاجة لتوسيع نطاق في التطبيق: كل من التوسع وتقليص.
- في المستقبل ، كنت تخطط لدمج أحدث التقنيات ، على سبيل المثال ، التعلم الآلي.
- تحتاج إلى استخدام إطار موثوق يتم تطويره بنشاط ، وتستخدمه العديد من الشركات الكبرى ومواقع الويب الرائدة حول العالم.
- يجب أن يكون كل من تطبيق الويب وجانب الخادم لواجهة برمجة التطبيقات في نفس قاعدة الشفرة ، بما يتوافق مع "مصدر الحقيقة الوحيد" (مبدأ DRY)
- لا تريد العمل مباشرة مع استعلامات قاعدة البيانات ، وتحتاج إلى دعم ORM.
- أنت ذاهب لاستخدام البرمجيات الحرة.
- إذا واجهتك مشكلة ، فسيتعين عليك البحث عن حل بنفسك ، لذلك ستحتاج إلى وثائق جيدة ومجتمع مطور سريع الاستجابة.
بالإضافة إلى العوامل المذكورة أعلاه ، تحتاج إلى التفكير في المهارات التي لديك (أو فريقك).
إذا كنت مطور ويب وتعرف بالفعل كيف تعمل الويب ، فإن العمل مع Django سيعمل على نحو سلس نسبيًا. أنت بحاجة إلى فهم كيفية هيكلة جانغو ، وبعض الأشياء الأخرى ، بالطبع ، أيضًا - واعتبر أنك مستعد.
المواقع التي تعمل على إطار جانغو
يعود تاريخ جانغو إلى حوالي 10 سنوات. خلال هذه الفترة ، تم استخدامه في الإنتاج في العديد من المواقع الكبرى. فيما يلي بعض الأمثلة البارزة:
هندسة بينتيريستموزيلاBitbucketUdemyالبصلهاردواشنطن بوستNASAسبوتيفيهندسة انستغرامالجغرافية الوطنيةالوصيJSFiddleهل ما زلت تشك فيما إذا كان الأمر يستحق قضاء وقتك الثمين في التدرب مع جانغو؟ للبدء ، دعنا نناقش سبب عدم ملاءمة Django لمشروعك:
عندما لا تستخدم Django
- أنت تتعامل مع تطبيق ضخم ، وهو ببساطة لا يلائم قاعدة الكود. قد يكون من الأفضل تقسيم التطبيق إلى خدمات micros. كل مستوى من مستوياته يتم التعامل معه بشكل أفضل من قبل فريق متخصص. لكل حالة استخدام محددة ، تقنيات أخرى مناسبة. في بعض هذه السيناريوهات ، قد يكون تطبيق Django مفيدًا ، ولكن سيكون من غير العملي تطوير مثل هذا التطبيق بالكامل على Django (وكذلك على أي إطار عمل منفصل آخر).
- تحتاج إلى كتابة تطبيق بسيط لا تحتاج فيه إلى العمل مع قاعدة بيانات أو إجراء عمليات ملف أو القيام بأي شيء معقد قليلاً على الأقل.
هي الأنسب Microframes لمثل هذه الحالات. واحدة من الأشكال المصغرة الأكثر شعبية - قارورة ، مثل جانغو ، هو مكتوب في بيثون. تتوفر الإطارات المصغرة المشابهة في تقنيات أخرى ، على سبيل المثال. نحيف في PHP و Apache Spark في Java و Express.js في Node.js ، إلخ. - تريد أن تكتب كل شيء بنفسك من نقطة الصفر وأنت تعرف ماذا تفعل.
- أنت أو زملائك غير معتادين تمامًا على Django / Python ، وليس لديك الوقت والموارد لتطوير المهارات الضرورية.
أفضل حل في الحالة الأخيرة هو العمل مع ما تعرفه بشكل أفضل. إذا كنت تستخدم تقنية جديدة أو إطار عمل ، فستزداد فرص الشد مرات عديدة.
إذا لم يكن كل ما سبق متعلقًا بمشروعك ، فمن المحتمل أن يناسبك Django.
أسباب لاستخدام جانغو
إطار جانغو مكتوب بلغة بيثون:
أنا أعلم أنك تعرف ذلك.
لذلك ، سوف أغتنم هذه الفرصة وأؤكد بعض المزايا الرئيسية لجانغو التي ورثها عن بيثون. سأكون موجزا.
بيثون هي واحدة من لغات البرمجة الأكثر شعبية وأسرع نموا في العالم.
مصادر:
مؤشر TIOBEتحليل بيانات Jobs.com من قبل Coding Dojoجيثب أوكتوفيرسيتعلم بايثون هو في الحقيقة بسيط جدا. عادةً ما يكون المطورون العصريون أول من تعلم هذه اللغة المعينة.
ما ورد أعلاه لا يعني على الإطلاق أن هذه اللغة مخصصة للمبتدئين فقط. بيثون يستخدم أيضا في التكنولوجيا المتطورة. بيثون يستخدم بنشاط في المكدس التكنولوجي للعديد من الشركات العملاقة ، بما في ذلك جوجل.
بيثون كبيرة لتطوير أدوات تجريد الويب.
يتفاعل بشكل جيد مع اللغات الأخرى.
لا يعني تطوير بيثون أنك ستضطر إلى كتابة كل شيء في بيثون فقط.
قد تكون قادرًا على استخدام المكتبات للعديد من اللغات الأخرى ، بما في ذلك C / C ++ / Java.
بيثون محمولة وسهلة القراءة.
بيثون يمكن أن تعمل حتى على JVM.
تعرف على جايثون .
يستخدم Python على نطاق واسع في التقنيات الشائعة مثل Big Data and Machine Learning.
يمكنك الوصول إلى مكتبة PyPI الضخمة.
جانغو الجامع
"شامل" يعني أن Django خارج الصندوق مجهز بمعظم المكتبات والأدوات اللازمة في مواقف عملية مشتركة. سأذكر: Django ORM ، الوسيطة ، المصادقة ، مكتبات HTTP ، دعم متعدد المواقع ، i18n ، Django Admin ، محرك القوالب ، إلخ. - وهذا ليس كل شيء. لا يوجد إطار آخر معروف لي يقدم مثل هذا الدعم الواسع في وقت واحد.
يعتبر البعض هذا "ناقصًا" ، بينما يعتبره البعض "زائدًا". يختلف كل جانب من جوانب القانون بطريقته الخاصة ، وإلى حد ما أتفق مع كليهما.
هذا ناقص ، لأنه في مثل هذه الحالة يتحول الإطار إلى متراصة.
أعتقد أنه إذا كنت بحاجة إلى هذه الميزات التي تؤدي إلى تكوين متراصة ، فسوف يتعين عليك بطريقة أو بأخرى استخدام مكتبة أخرى (أو كتابتها بنفسك).
لماذا ، إذن ، لا تستخدم أداة يوجد بها كل هذا بالفعل ، وتم اختبارها في معارك ، وتعمل في أكبر المواقع ، وتم تطويرها بنشاط وتزويدها بدعم المجتمع؟
إذا كنت لا تحتاج إلى معظم الميزات التي تقدمها Django ، فمن الأفضل أن تظل في بعض الأعمال المصغرة.
لا تعيد اختراع العجلة - هل تتذكر؟ اقض وقتك على ما هو مهم حقًا ، ودع جانغو يقوم بالباقي.
جانغو المشرف
على الرغم من أنني ذكرت هذا العنصر في القسم السابق ، إلا أنه يستحق عناية أكبر. في العديد من الأطر ، على وجه الخصوص ، Laravel ، Yii ، إلخ ، بذلت محاولات لتبسيط العمل مع لوحة المسؤول. لقد تمكنت من تطوير العديد من المشاريع في أطر عمل مختلفة ، ولكن لا يمكن مقارنة أي منها بـ Django في راحة العمل مع لوحة المشرف.
يعتقد البعض أن Django Admin غير مرن بما فيه الكفاية ، ولضبط أي جزء منه لاحتياجاتك ، تحتاج إلى بذل الكثير من الجهد. في البداية ، من خلال العمل مع جانغو ، كنت أميل إلى الاتفاق على ذلك ، لكن مع مرور الوقت ، وبعد أن توصلت إلى الإطار ، أصبحت مقتنعًا بذلك. نعم ، هناك منحنى تعليمي خاص به ، ولكن لن تضيع ثانية تكرسها لها.
في الواقع ، Django Admin منظم بشكل جيد للغاية. في بعض مشاريعي ، استخدمت لوحة المشرف لـ Django "كما هي" ، وفي حالات أخرى ، استبدلتها تمامًا بقوالبي الخاصة التي طورتها من البداية. على أي حال ، لم يستغرق ذلك وقتًا أطول من التطوير مع أي إطار آخر عرفته.
زائد الرئيسي؟ يمكنك الحصول على حقوق الوصول والمصادقة خارج الصندوق. قد يستغرق الأمر عدة أسابيع (أو بضعة أيام على الأقل) لتطوير كل هذا من البداية.
مبدأ DRY (لا تتكرر)
أعرف العديد من الأطر التي يزعم أنصارها أنهم يمتثلون حقًا لمبدأ "DRY". لقد عملت مع العديد من هذه الأطر ، ولكن في أي منها يتم تطبيق مبدأ "DRY" كما ينبغي.
لسوء الحظ ، في معظم الأُطُر ، لم يتم إيلاء مبدأ "DRY" الاهتمام الكافي. في رأيي ، إذا كنت تكتب تطبيقاً تنوي تحديثه بانتظام (ويمكن أن يقال هذا عن معظم التطبيقات الحديثة) ، فعليك اتباع مبدأ DRY لتجنب المشاكل.
لذلك ، في Laravel ، يجب عليك كتابة التحقق من الصحة لكل إجراء على حدة. الوضع هو نفسه مع معظم الأطر الأخرى. لجعل التعليمات البرمجية الخاصة بك تتوافق مع مبدأ DRY ، تحتاج إلى العمل بجد. من الصعب تتبع ذلك ، خاصة إذا كنت تعمل كفريق.
بدوره ، تم تصميم إطار جانغو بطريقة تنتهك عادةً انتهاك مبدأ DRY هناك عن قصد فقط.
لا ينبغي أن يكون ، أليس كذلك؟ النظر في مثال.
إليك كيفية عمل Django مع التحقق من صحة قاعدة البيانات والهجرة
إنشاء فئة
Model
مع الحقول المطلوبة. نشير إلى جميع عمليات التحقق والقيود الإضافية التي نحتاجها.
يتم إنشاء عمليات الترحيل بواسطة أمر CLI واحد: `python management.py makemigrations`.
يتم إجراء تغييرات على قاعدة البيانات باستخدام أمر CLI واحد: `python management.py migrate`.
يتم التحقق من عمليات التحقق من الصحة والقيود تلقائيًا خلال كل عملية من عمليات CRUD - سواء كان ذلك من خلال إدارة Django أو إطار عمل Django REST. لا يلزمك كتابة عمليات التحقق مرة أخرى.
يتم استخدام نفس فئة الطراز لإنشاء طرق عرض Django Admin CRUD. لا يلزم HTML / CSS مخصص.
قارن هذه الشروط بأي إطار عمل آخر - وأعتقد أنه لن يكون بمقدورك أبدًا القيام بأي شيء مثل هذا في الأسطر القليلة التالية من التعليمات البرمجية:
class Employee(models.Model): name = models.CharField(max_length=127) email = models.EmailField(null=True, blank=True) created_at = models.DateTimeField(blank=True, null=True, auto_now_add=True) updated_at = models.DateTimeField(blank=True, null=True, auto_now=True)
هذا ليس فقط حول "عدم التكرار". هذا النهج يوفر لك من الأخطاء في المستقبل. لقد وجدنا أنفسنا جميعًا في مواقف صادفنا فيها تغيير شيء ما في مكان ما ونسينا استبداله في مكان آخر - وهذا أصبح واضحًا فقط بعد أن بدأ العديد من المستخدمين يواجهون مشكلات.
في جانغو ، بالعودة إلى الكود أعلاه ، إذا كان عليك أن تستبدل حقل
`max_length`
بشيء آخر - فقط قم بذلك هنا. سيتم تطبيق التغيير تلقائيًا على التحقق من صحة جميع المسارات وعلى قاعدة البيانات.
كائن رسم الخرائط العلائقية في جانغو
يوفر Django محرك ORM كامل المواصفات.
عملت مع العديد من أدوات ORM في العديد من التقنيات ، بما في ذلك Eloquent ، greenDAO ، Yii AR ، إلخ. في كل هذه الطلبات ، يتم التعامل مع أبسط الطلبات جيدًا ، لكن عاجلاً أم آجلاً اضطررت إلى كتابة هذه الطلبات أو تلك من الصفر ، نظرًا لأن آلية ORM لم تستطع التعامل مع حالة عملية محددة.
مع Django ORM ، لم أكن حتى الآن في مثل هذه الحالات. لقد نجحت بشكل جيد لدرجة أنك قد تنسى أنك تعمل مع استعلامات قاعدة البيانات. هذا هو بالضبط ما يجب أن يكون تعيين كائن العلائقية. فيما يلي بعض الأمثلة عن Django ORM:
# 5 , rank = 10 age <= 30 top_young_employees = Employee.objects.filter(rank=10, age__lte=30)[:5] # employee = Employee.objects.create(name='John Doe', age=35, country='IN') # print(employee.name)
التطور السريع
يحب مبدعو أي إطار ويب تقريبًا التباهي بهذا الأمر ، وربما يكونون جميعهم على حق - اعتمادًا على المعنى الذي وضعناه في كلمة "سريع".
صحيح ، مع Django تتم بعض الأشياء بسرعة فرحان. لقد رأيت بالفعل مدى سهولة تمكننا من تحديد واجهة المستخدم الخاصة بالمسؤول وجدول قاعدة البيانات والتحقق من صحتها.
كان مجرد غيض من فيض.
من حيث المبدأ ، ليس التطور السريع ميزة بحد ذاتها ، بل هو مجرد نتيجة طبيعية لـ Django DRY و ORM ومحرك القوالب والفلسفة الشاملة كليًا.
جانغو إطار الأمن
دعنا نعترف ، في بعض الأحيان يكون المطورون كسولون. أنا متأكد من ذلك. من وقت لآخر ، أنا المماطلة ، تأجيل الحل للمهام الحرجة. هذا هو المكان الذي يمكن أن تنشأ نقاط الضعف المختلفة.
أنا أحب بشكل خاص حقيقة أن جانغو لا يجعل التساهل الأمني يسرع بخطى التنمية. يتم تنشيط ميزات الأمان بشكل افتراضي ، لذلك لا يهم إذا كنت كسولًا أم لا.
المصدر المفتوح ، وثائق ممتازة ، مجتمع ضخم ، إلخ.
نظرًا لأن Django هو إطار مفتوح المصدر وشعبية بجنون ، فقد تشكل مجتمع سريع الاستجابة من حوله. أعتقد أنك على دراية بمزايا البرنامج المجاني - وهكذا ، فهي جميعها متأصلة في جانغو.
وثائق Django الرسمية أكثر من كافية لأي مطور. إذا واجهتك مشكلة ، فإن إيجاد حل ليس أمرًا صعبًا.
قد يكون لديك بالفعل انطباع بأن Django قد أنشأ الكثير من مكتباته الخاصة ، لذلك قد يفاجأ أنه لا توجد مكتبة خاصة للاختبار هنا. لا ، لا تعتقد أن إطار عمل جانغو لا يدعم الاختبار - إنه يدعم ، على هذا النحو. إنه فقط وفقًا لمبدأ "عدم التكرار" ، سيكون من غير المجدي تطوير مكتبة للاختبار عندما تكون مكتبة ممتازة من هذا النوع موجودة بالفعل في بيثون نفسها. جانغو يتفاعل معها بشكل جيد. بالإضافة إلى ذلك ، فهو يجمع جيدًا مع مكتبات الطرف الثالث ، مثل pytest.
الحالة الحالية لجانغو وغيرها من الأطر الشعبية
لذا ، حاولت إلى أقصى حد ممكن تسليط الضوء على المشاكل التي واجهتها عند العمل مع أطر أخرى ومقارنة هذه الأطر مع Django. بعد العمل مع Yii و CodeIgniter و WordPress و CS-Cart و Laravel ، إلخ ، توصلت إلى استنتاج مفاده أن Django أفضل بكثير من أي منهم.
ومع ذلك ، هذا مجرد رأيي.
إذا كنت تحب الإحصاءات ، فإليك الدراسة السنوية لـ Stack Overflow ، حيث يعتبر Django من بين أكثر الأطر شعبيةً والمطلوبة:
الأطر والمكتبات والأدواتأكثر الأطر المحببة والخائفة والمطلوبة والمكتبات والأدواتبالإضافة إلى التجربة المذكورة أعلاه مع PHP ، قمت أيضًا بتطوير تطبيقات Android في Java وتطبيقات العملاء في React.js. في كل هذه الحالات ، قضيت وقتًا طويلاً في إعادة بناء قاعدة الشفرات ، وأبحث عن أفضل بنية ، بعد بضعة أشهر من الارتباط بمشكلات القابلية للتوسّع ، ثم تناول إعادة التجديد مرة أخرى.
قمت مؤخرًا بإعادة كتابتها من تطبيق Laravel إلى Django وهو تطبيق تم إنتاجه منذ أكثر من عام. تمكنت من نشر قاعدة رمز جديدة في أقل من 10 أيام ، وكتابة الحد الأدنى لمقدار الشفرة لهذا (أقول نفس الشيء: تقل درجة التعقيد!) في الاتجاه المعاكس ، ستستغرق هذه العملية بالتأكيد أكثر من شهر.
إذا حاولت مقارنة الأطر الأخرى مباشرة مع Django ، فلن يمنحك هذا أي شيء.
قد تظهر مراقبة الأداء أن إطار Java أسرع من Django. يمكنك أن تكون جيدًا في PHP ، لذلك من الممكن أن يكون تطوير التطبيق في Django أسرع من إطار PHP المألوف. في حالة تطبيق بسيط للغاية ، قد يبدو إعداد Django مملاً بعض الشيء لك - بالطبع ، من الأسهل بكثير كتابة ملف نصي. قد تختلف نتائج الاستطلاع بناءً على الجمهور الذي تم إجراؤه.
ومع ذلك ، نحن هنا لا نناقش الأطر المتعلقة بالتقنيات الأخرى فقط. حتى إذا كنت معتادًا على Python ، فقد تجد أن أعمال Flask المصغرة أكثر ملاءمة ومرغوبة. يجب أن نفكر في أي واحد نتوقف عنده.
نصيحتي هي ببساطة عدم مقارنتها.
استنتاج
في رأيي ، تمكنت Django من تحقيق التوازن التام بين الأداء والهندسة المعمارية وتعقيد التنمية والأمن والتدرجية.
إذا كنت تبدأ في كتابة مشروع من الصفر ، فإنني أوصي بشدة بمحاولة إعداده مع Django.