آشنایی با فریم ورک جنگو

جنگو یک فریم ورک وب رایگان و متن‌باز مبتنی بر پایتون است که روی یک سرور وب اجرا می‌شود. این فریم ورک از الگوی معماری مدل قالب نما (MTV) پیروی می‌کند. توسط بنیاد نرم‌افزاری جنگو (DSF) که یک سازمان مستقل و غیرانتفاعی در ایالات متحده است نگهداری می‌شود.

آشنایی با فریم ورک جنگو

هدف اصلی جنگو تسهیل ایجاد وب‌سایت‌های پیچیده و مبتنی بر پایگاه داده است. این فریم ورک بر قابلیت استفاده مجدد و «قابل اتصال» بودن اجزاء کد کمتر اتصال کم توسعه سریع و اصل «خودت را تکرار نکن» تأکید دارد. در کل پایتون استفاده می‌شود حتی برای تنظیمات فایل‌ها و مدل‌های داده. جنگو همچنین یک رابط مدیریتی اختیاری برای ایجاد خواندن به‌روزرسانی و حذف ارائه می‌دهد که به صورت پویا از طریق بررسی درونی تولید شده و از طریق مدل‌های ادمین پیکربندی می‌شود.

برخی از سایت‌های شناخته شده‌ای که از جنگو استفاده می‌کنند شامل اینستاگرام موزیلا دیسکاس بیت‌باکت نکست‌دور و کلاب‌هاوس هستند.

تاریخچه

جنگو  در پاییز سال ۲۰۰۳ ایجاد شد زمانی که برنامه‌نویسان وب روزنامه Lawrence Journal-World آدریان هولواتی و سایمون ویلیسون شروع به استفاده از پایتون برای ساخت برنامه‌ها کردند. جیکوب کاپلان-ماس در اوایل توسعه جنگو اندکی قبل از پایان دوره کارآموزی ویلیسون استخدام شد. این فریم ورک به صورت عمومی تحت مجوز BSD در ژوئیه ۲۰۰۵ منتشر شد. نام این فریم ورک برگرفته از گیتاریست جنگو Reinhardt است. هولواتی خود نوازنده گیتار جاز رومانی است که تا حدی از موسیقی راین‌هارت الهام گرفته است.

در ژوئن ۲۰۰۸ اعلام شد که بنیاد نرم‌افزاری جنگو (DSF) تازه تأسیس شده در آینده از جنگو نگهداری خواهد کرد.

ویژگی‌ها

با وجود داشتن نامگذاری خاص خود مانند نامیدن اشیاء قابل فراخوانی که پاسخ‌های HTTP را تولید می‌کنند به نام “نماها” (views) فریم ورک اصلی جنگو می‌تواند به عنوان یک معماری MVC دیده شود. این فریم ورک شامل یک نگاشت‌گر شیء-رابطه‌ای (ORM) است که میان مدل‌های داده (که به صورت کلاس‌های پایتون تعریف شده‌اند) و یک پایگاه داده رابطه‌ای (“مدل”) واسطه‌گری می‌کند یک سیستم برای پردازش درخواست‌های HTTP همراه با یک سیستم قالب‌بندی وب (“نما”) و یک مسیریاب URL مبتنی بر عبارات منظم (“کنترلر”).

همچنین در فریم ورک اصلی موارد زیر گنجانده شده است:

  • یک سرور وب سبک و مستقل برای توسعه و تست
  • سیستمی برای سریال‌سازی و اعتبارسنجی فرم‌ها که می‌تواند بین فرم‌های HTML و مقادیری که مناسب ذخیره‌سازی در پایگاه داده هستند ترجمه انجام دهد
  • سیستم قالب‌بندی که از مفهوم ارث‌بری که از برنامه‌نویسی شیءگرا گرفته شده استفاده می‌کند
  • فریم ورک کشینگ که می‌تواند از چندین روش کش مختلف استفاده کند
  • پشتیبانی از کلاس‌های میدلور که می‌توانند در مراحل مختلف پردازش درخواست مداخله کنند و عملکردهای سفارشی انجام دهند
  • یک سیستم داخلی مسیریابی که به اجزای یک برنامه اجازه می‌دهد از طریق سیگنال‌های از پیش تعریف‌شده با یکدیگر ارتباط برقرار کنند
  • سیستم بین‌المللی‌سازی که شامل ترجمه اجزای خود جنگو به زبان‌های مختلف است
  • سیستم سریال‌سازی که می‌تواند نمایش‌های XML و/یا JSON نمونه‌های مدل جنگو را تولید و خواند
  • سیستمی برای گسترش قابلیت‌های موتور قالب
  • رابطی به فریم ورک تست واحد داخلی پایتون

برنامه‌های همراه

توزیع اصلی جنگو همچنین شامل تعدادی برنامه در بسته “contrib” خود است از جمله:

  • یک سیستم احراز هویت قابل گسترش
  • رابط مدیریتی پویا
  • ابزارهایی برای تولید فیدهای syndication RSS و Atom
  • فریم ورک “Sites” که اجازه می‌دهد یک نصب جنگو چندین وب‌سایت با محتوای و برنامه‌های خود را اجرا کند
  • ابزارهایی برای تولید نقشه‌های سایت (Sitemaps)
  • محافظت داخلی در برابر جعل درخواست میان‌سایتی (CSRF) اسکریپت‌نویسی میان‌سایتی (XSS) تزریق SQL شکستن رمز عبور و سایر حملات معمول وب که اکثر آن‌ها به طور پیش‌فرض فعال هستند.
  • فریم ورکی برای ایجاد برنامه‌های سیستم اطلاعات جغرافیایی (GIS)

قابلیت گسترش

سیستم پیکربندی جنگو اجازه می‌دهد کدهای شخص ثالث در پروژه‌های معمولی وارد شوند به شرطی که از قراردادهای برنامه‌های قابل استفاده مجدد پیروی کنند. بیش از ۵۰۰۰ بسته برای گسترش رفتار اصلی فریم ورک موجود است که راه‌حل‌هایی برای مسائلی ارائه می‌دهند که ابزار اصلی به آنها نپرداخته است: ثبت‌نام جستجو ارائه و مصرف API سیستم مدیریت محتوا (CMS) و غیره.

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

تنظیمات سرور

جنگو می‌تواند روی سرورهای وب سازگار با ASGI یا WSGI اجرا شود .جنگو به طور رسمی از پنج پایگاه داده پشتیبانی می‌کند: PostgreSQL MySQL MariaDB SQLite و Oracle همچنین می‌توان از Microsoft SQL Server با mssql-جنگو استفاده کرد.

تاریخچه نسخه

تیم جنگو گاهی اوقات برخی نسخه‌ها را به عنوان نسخه‌های «پشتیبانی بلندمدت» (LTS) معرفی می‌کند.[26] نسخه‌های LTS به مدت زمان تضمین شده‌ای معمولاً بیش از ۳ سال اصلاحات امنیتی و رفع مشکلات از دست دادن داده‌ها را دریافت می‌کنند صرف‌نظر از سرعت انتشار نسخه‌های بعدی.

جنگوCon

کنفرانسی نیم‌سالانه برای توسعه‌دهندگان و کاربران جنگو به نامجنگوCon” وجود دارد که از سپتامبر ۲۰۰۸ برگزار می‌شود. جنگوCon هر سال در اروپا در ماه‌های می یا ژوئن برگزار می‌شود؛ در حالی که کنفرانس دیگری در ایالات متحده در ماه‌های اوت یا سپتامبر در شهرهای مختلف برگزار می‌شود.

جنگوCon سال ۲۰۱۲ از ۳ تا ۸ سپتامبر در واشنگتن دی.سی برگزار شد. جنگوCon سال ۲۰۱۳ در شیکاگو در هتل Hyatt Regency برگزار شد و پس از کنفرانس رویدادهای Sprints در مرکز آموزش کامپیوتر Digital Bootcamp میزبانی شدند.

جنگوCon US سال ۲۰۱۴ از ۳۰ اوت تا ۶ سپتامبر به پورتلند اورگن بازگشت. جنگوCon US سال ۲۰۱۵ از ۶ تا ۱۱ سپتامبر در آستین تگزاس در مرکز اجرایی AT&T برگزار شد. جنگوCon US سال ۲۰۱۶ از ۱۷ تا ۲۲ ژوئیه در فیلادلفیا پنسیلوانیا در مدرسه وارتون دانشگاه پنسیلوانیا برگزار شد.

جنگوCon US سال ۲۰۱۷ در اسپوکن واشنگتن برگزار شد؛ در سال ۲۰۱۸ جنگوCon US در سن دیگو کالیفرنیا برگزار شد.

جنگوCon US سال ۲۰۱۹ دوباره در سن دیگو کالیفرنیا از ۲۲ تا ۲۷ سپتامبر برگزار شد. جنگوCon 2021 به صورت مجازی برگزار شد و در سال ۲۰۲۲ جنگوCon US از ۱۶ تا ۲۱ اکتبر به سن دیگو بازگشت.

جنگوCon US سال ۲۰۲۳ از ۱۶ تا ۲۰ اکتبر در مرکز همایش‌های دورهام کارولینای شمالی برگزار شد و جنگوCon US سال ۲۰۲۴ قرار است از ۲۲ تا ۲۷ سپتامبر دوباره در دورهام برگزار شود.