جنگو (چارچوب نرم‌افزاری)

جنگو 
یک چارچوب نرم‌افزاری تحت وب آزاد و متن‌باز است که به زبان پایتون نوشته شده‌است و از معماری مدل-نما-قالب  پیروی می‌کند.
هدف اصلی جنگو ساخت آسان سایت‌های پیچیده و وابسته به دیتابیس است و بر پایهٔ قابلیت استفادهٔ مجدد و قابل اتصال بودن اجزای مختلف، توسعهٔ سریع و اصل خودت را تکرار نکن (DRY) طراحی شده‌است. جنگو سراسر از پایتون استفاده می‌کند، حتی برای تنظیمات، فایل‌ها و مدل‌های اطلاعات.

از وب‌سایت‌های مشهوری که از جنگو استفاده می‌کنند می‌توان به پی‌بی‌اس،اینستاگرام،بنیاد موزیلا،واشینگتن تایمزOpensource.washingtontimes.com. Retrieved on 2014-05-30. اشاره کرد. جنگو همچنین در ساخت شبکه اجتماعی پینترست استفاده شد اما بعداً، به فریم ورک فلسک انتقال یافت.

 تاریخچه 
جنگو در پاییز سال ۲۰۰۳ توسط Simon Willison و Adrian Holovaty در حین ایجاد برنامه در شرکت Lawrence Journal-World متولد شد. سپس در سال ۲۰۰۵ تحت اجازه‌نامه بی‌اس‌دی منتشر شد.
نام جنگو از جنگو راینهارت، نوازندهٔ گیتار جاز گرفته شده‌است.

در ژوئن سال ۲۰۰۸، بنیاد نرم‌افزاری Django Software Foundation (DSF) برای توسعه و حفظ جنگو شکل گرفت.

 امکانات 
 کامپوننت‌ها (اجزاء) 
هسته اصلی جنگو مبتنی بر معماری MVT است که شامل Model برای ارتباط با پایگاه داده، View و Template است.

همچنین در هسته فریم ورک جنگو امکانات زیر گنجانده شده:
 وب سرور مستقل و داخلی برای توسعه و تست سریع برنامه
 قابلیت اعتبارسنجی و ترتیب بندی، برای انتقال و ذخیره‌سازی اطلاعات فرم‌های اچ‌تی‌ام‌ال در پایگاه داده
 سیستم قالب بندی صفحات با استفاده از مفهوم ارث بری که از برنامه‌نویسی شیءگرا الهام گرفته شده
 پشتیبانی از کلاس‌های میان‌افزار که با استفاده از آن می‌توان توابع سفارشی برای پردازش درخواست‌های مراحل مختلف برنامه استفاده کرد
 ابزاری برای بین‌المللی‌سازی و محلی‌سازی کامپوننت‌های جنگو به انواع زبان‌های برنامه‌نویسی دیگر
 ابزاری برای خواندن زبان نشانه گذاری اکس‌ام‌ال یا نمایش جیسون از مدل‌های جنگو
 ابزارهایی برای توسعه و گسترش موتور قالب بندی صفحات
 استفاده از ابزار قدرتمند و انعطاف‌پذیر Django REST framework برای ساخت رابط برنامه‌نویسی کاربردی(API) وب

 نرم‌افزارهای بسته‌بندی‌شده 
در توزیع اصلی جنگو تعداد زیادی بسته‌های نرم‌افزاری وجود دارد که شامل:
 ابزاری برای اعتبارسنجی قابل توسعه
 رابط کاربری پنل مدیریت به‌طور پویا (داینامیک)
 ابزارهایی برای تولید آراس‌اس و اتم (خوراک وب)
 فریم‌ورکی برای درست کردن برنامه‌های مبتی بر سامانه اطلاعات جغرافیایی(GIS)

 طبقه‌بندی وب سرور 
جنگو می‌تواند به راحتی با استفاده از وب سرورهایی همچون آپاچی، انجین‌اکس با به کار بردن واسط دروازه کارساز وب(WSGI)، گونیکورن (سرور HTTP)، و یا، Cherokee اجرا شود.Django documentation of deployment 
همچنین جنگو، به‌طور رسمی، از چهار پایگاه داده  بک اند از جمله: پستگرس‌کیوال، مای‌اس‌کیوال، اس‌کیوال لایت 
و پایگاه داده اوراکل پشتیبانی می‌کند.

برای استفاده از نواس‌کیوال در جنگو، انشعاب (توسعه نرم‌افزار) ای به نام django-nonrel به‌وجود آمده که امکان پشتیبانی از پایگاه داده‌هایی همچون مانگودی‌بی و گوگل اپ انجین را فراهم کرده‌است.

جنگو می‌تواند با استفاده از جایتون بر بستر برنامه‌های سمت سرور مبتنی بر سکوی جاوا، نسخه سازمانی(Java EE) مانند WildFly یا GlassFish استفاده شود که برای اجرای آن، نیاز به نصب django-jython که اتصال به پایگاه داده را ممکن می‌کند نیاز است.

 تاریخچهٔ انتشار نسخه 
گهگاه تیم جنگو، نسخه‌های خاصی از برنامه را با عنوان پشتیبانی بلند مدت (LTS) منتشر می‌کند. همچنین نسخهٔ LTS به‌طور معمول تا سه سال یا بیشتر، به‌روزرسانی‌های امنیتی و اصلاحات برنامه را دریافت می‌کند.

+ تاریخچهٔ انتشار نسخه‌های جنگو تا به امروز: نسخه‌ها تاریخ یادداشت ۰٫۹۰"Introducing Django 0.90". Django weblog. Retrieved 2 February 2013.  ۱۶ نوامبر ۲۰۰۵  First release ۰٫۹۱"Django 0.91 released". Django weblog. Retrieved 2 February 2013.  ۱۱ ژوئن ۲۰۰۶  "new admin"۰٫۹۵"Introducing Django 0.95". Django weblog. Retrieved 2 February 2013.  ۲۹ ژوئیه ۲۰۰۶  "magic removal" ۰٫۹۶"Announcing Django 0.96!". Django weblog. Retrieved 2 February 2013.  ۲۳ مارس ۲۰۰۷  "newforms", testing tools ۱٫۰"Django 1.0 released!". Django weblog. Retrieved 2 February 2013.  ۳ سپتامبر ۲۰۰۸  API stability, decoupled admin, unicode ۱٫۱"Django 1.1 released". Django weblog. Retrieved 2 February 2013.  ۲۹ ژوئیه ۲۰۰۹  Aggregates, transaction based tests ۱٫۲"Django 1.2 released". Django weblog. Retrieved 2 February 2013.  ۱۷ مه ۲۰۱۰  Multiple db connections, CSRF, model validation۱٫۳"Django 1.3 released". Django weblog. Retrieved 2 February 2013.  ۲۳ مارس ۲۰۱۱  Class based views, staticfiles ۱٫۴ پشتیبانی بلندمدت (LTS"Django 1.4 released". Django weblog. Retrieved 2 February 2013.)  ۲۳ مارس ۲۰۱۲  Timezones, in browser testing, app templates ۱٫۵"Django 1.5 released" Django weblog. Retrieved 27 February 2013.  ۲۳ فوریه ۲۰۱۳  Python 3 Support, configurable user model ۱٫۶"Django 1.6 released" Django weblog. Retrieved 6 November 2013.  ۶ نوامبر ۲۰۱۳  Dedicated to Malcolm Tredinnick, db transaction management, connection pooling۱٫۷"Django 1.7 released" Django weblog. Retrieved 4 September 2014.  ۲ سپتامبر ۲۰۱۴  Migrations, application loading and configuration ۱٫۸ پشتیبانی بلندمدت (LTS)"Django 1.8 released" Django weblog. Retrieved 2 April 2015.  ۱ آوریل ۲۰۱۵  Native support for multiple template engines. Supported until at least April 2018 ۱٫۹"Django 1.9 released" Django weblog. Retrieved 1 December 2015.  ۱ دسامبر ۲۰۱۵  Automatic password validation. New styling for admin interface.۱٫۱۰"Django 1.10 released" Django weblog. Retrieved 1 August 2016.  ۱ اوت ۲۰۱۶  Full text search for PostgreSQL. New-style middleware. ۱٫۱۱ پشتیبانی بلندمدت (LTS)"Django 1.11 released" Django weblog. Retrieved 4 April 2017.  ۴ آوریل ۲۰۱۷  Last version to support Python 2.7. Supported until at least April 2020 ۲٫۰"Django 2.0 released" Django weblog. Retrieved 3 December 2017.  ۲ دسامبر ۲۰۱۷  First Python 3-only release, Simplified URL routing syntax, Mobile friendly admin ۲٫۱"Django 2.1 released" Django weblog. Retrieved 2 August 2018.  ۱ اوت ۲۰۱۸  Model "view" permission ۲٫۲ پشتیبانی بلندمدت  (LTS)Django 2.2.3 release notes Retrieved 1 July 2019.  ‏۱ آوریل ۲۰۱۹  Security release. Supported until at least April 2022 ۳٫۰ retrived 2 December 2019. ۲ دسامبر ۲۰۱۹  ASGI support ۳٫۱ ۴ اوت ۲۰۲۰  Asynchronous views and middleware۳٫۲ پشتیبانی بلندمدت (LTS)  آوریل ۲۰۲۱  Supported until at least April 2024 ۴٫۰Download Django دسامبر ۲۰۲۱  Extended Support until at April 2023 ۴٫۱ اوت ۲۰۲۲  Extended Support until at December 2023 ۴٫۲ پشتیبانی بلندمدت (LTS) آوریل ۲۰۲۳  Extended Support until at April 2026 

 پشتیبانی جنگو از ابزارهای توسعه 
برای توسعه دادن پروژه جنگو خود، هیچ نیاز به ابزار خاصی ندارید و می‌توانید با استفاده از ویرایش‌گر متن‌های مرسوم کد منبع خود را توسعه دهید. با این حال ویرایش‌گر متن‌هایی به‌طور مخصوص برای برنامه‌نویسی طراحی شده‌اند که قابلیت‌هایی همچون برجسته‌سازی نحو را دارا هستند.
با توجه به اینکه جنگو با استفاده از زبان پایتون نوشته می‌شود، استفاده ازویرایش‌گر متن‌هایی که از نحوه نوشتار پایتون پشتیبانی می‌کنند می‌تواند مفید باشد.

با استفاده از محیط یکپارچه توسعه نرم‌افزار(IDE) می‌توانید قابلیت‌هایی مانند اشکال‌زدایی و بازسازی کد را حین توسعه برنامه خود استفاده کنید. همانند ویرایش‌گر متن ساده، محیط یکپارچه توسعه نرم‌افزار(IDE) که از پایتون پشتیبانی می‌کنند هم می‌توانند برای توسعه مفید باشند.
مقاله مرجع این مطلب رو ببینید:

 نحوه به‌کارگیری جنگو در رعایت اصول مهندسی نرم‌افزار 
چارچوب جنگو با ارائه‌ی امکانات و ابزارهای قدرتمندی، توسعه‌دهندگان را در رعایت اصول اساسی مهندسی نرم‌افزار یاری می‌رساند. به‌ویژه در زمینه‌های امنیت داده‌ها، جلوگیری از تکرار کد و تسهیل پیکربندی، جنگو با ارائه‌ی راه‌حل‌های نوآورانه، این اصول را به‌طور کارآمدی پیاده‌سازی می‌کند.

 امنیت داده‌ها 
جنگو امنیت داده‌ها را با ارائه‌ی مکانیزم‌هایی همچون جلوگیری از حملات CSRF (Cross Site Request Forgery) و SQL Injection از طریق ORM (Object-Relational Mapping) خود به‌طور جدی تضمین می‌کند. همچنین، سیستم احراز هویت پیش‌فرض جنگو و سیاست‌های دسترسی قابل تنظیم، به مدیران سایت امکان می‌دهد تا داده‌های حساس را در برابر دسترسی‌های غیرمجاز محافظت نمایند.

 جلوگیری از تکرار کد 
اصل DRY (Don't Repeat Yourself) یکی از اصول کلیدی در جنگو است که توسعه‌دهندگان را تشویق می‌کند تا از تکرار کد در پروژه‌های خود اجتناب کنند. جنگو با ارائه‌ی سیستم قالب‌بندی پیشرفته و امکان به‌اشتراک‌گذاری کد بین برنامه‌های مختلف، این امکان را فراهم می‌آورد که با کمترین تکرار کد، بیشترین بهره‌وری را از کدنویسی به دست آورد.

 تسهیل پیکربندی 
جنگو با پیشنهاد رویکرد «Convention over Configuration» (ترجیح قرارداد نسبت به پیکربندی)، تلاش می‌کند تا تنظیمات پیش‌فرض منطقی و کاربردی را برای پروژه‌های توسعه نرم‌افزار ارائه دهد. این رویکرد به توسعه‌دهندگان اجازه می‌دهد تا بدون صرف زمان زیاد برای پیکربندی‌های اولیه، سریع‌تر به توسعه‌ی ویژگی‌های جدید بپردازند.

 انجمن 
از سپتامبر سال ۲۰۰۸ تا به امروز، هر نیم‌سال کنفرانسی به نام «DjangoCon» برای توسعه دهندگان جنگو و کاربران آن برگزار می‌شود. همچنین کنفرانس «DjangoCon» سالیانه در ماه مه و ژوئن در اروپاDjangoCon EU series , Lanyrd.com و به‌طور مشابه، در اوت و سپتامبر در شهرهای مختلف آمریکا برگزار می‌شود.DjangoCon US series , Lanyrd.com

محل و تاریخ کنفرانس‌های برگزار شده DjangoCon تا به امروز:
 از سوم تا هشتم سپتامبر سال ۲۰۱۲، در واشینگتن، دی.سی.
 سال ۲۰۱۳ در هتل Hyatt Regency شیکاگو و هکاتون پس از رویداد، در مرکز آموزش رایانه
 از سی ام اوت تا ششم سپتامبر سال ۲۰۱۴، در  پورتلند
 از ششم تا یازدهم سال ۲۰۱۵، در مرکز اصلی ای‌تی اند تی(AT&T) شهر آستین، ایالت تگزاس
 از هفدهم تا بیست و دوم سال ۲۰۱۶، در مدرسه وارتون دانشگاه پنسیلوانیا شهر فیلادلفیا
 سال ۲۰۱۷، در شهر اسْپوکِین، ایالت واشینگتن
 سال ۲۰۱۸، شهر سن دیگو، ایالت کالیفرنیا

 تبدیل به زبان‌های برنامه‌نویسی دیگر 
برنامه نویسان، قالب الگوی جنگو را از پایتون به زبان‌های برنامه‌نویسی دیگر تبدیل کرده و از قابلیت چندسکویی نیز پشتیبانی می‌کنند. برخی از این موارد تبدیل‌های مستقیم از جنگو هستند اما برخی دیگر، اگرچه از مفاهیم جنگو الهام گرفته‌اند اما آزادی عمل برای تغیر دادن از ماهیت جنگو در آن‌ها هموار شده‌است:
 «Liquid» برای روبی (زبان برنامه‌نویسی)
 الگو: «swig» برای پرل
 «Twig» برای پی‌اچ‌پی و جاوا اسکریپت
 موتور نشانه‌گذاری جینجا برای پایتون (زبان برنامه‌نویسی)
 «ErlyDTL» برای ارلنگ

 جستارهای وابسته 
  فریم ورک فلسک
 روبی آن ریلز
 پایتون (زبان برنامه‌نویسی)

 منابع 

 پیوند به بیرون 
وبسایت رسمی جنگو
رده:پایتون (زبان برنامه‌نویسی)
رده:چارچوب‌های نرم‌افزاری تحت وب پایتون
رده:نرم‌افزارهای آزاد نوشته‌شده با پایتون
رده:نرم‌افزارهایی که از پروانه بی‌اس‌دی استفاده می‌کنند