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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

## منابع

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