جنگو (Django)، یک وب فریمورک پایتونی رایگان و اپن سورس (Open-source) است که با هدف توسعه سریع، آسان و کارآمد، توسط توسعهدهندگان باتجربه، ساخته شده است. در جنگو میتوانید بدون اختراع مجدد چرخ، فقط روی نوشتن برنامه خود تمرکز کنید. جنگو حرفهای بودن را در کنار سادگی و سرعت به ارمغان میآورد.
فریمورک (Framework) چیزی نیست جز مجموعهای از ماژولها که کار توسعه را آسانتر میکند. فریمورکها به شما این امکان را میدهند که به جای اینکه برنامهها و وبسایتها را از ابتدا ایجاد کنید، با استفاده از یک منبع موجود و آماده این کار را انجام دهید
django یا جنگو، یک فریمورک متنباز، رایگان و سطح بالای پایتون است که توسعهی سریع و طراحی تمیز و کاربردی را برای برنامههای وب امکانپذیر میسازد. این فریمورک که توسط توسعهدهندگانی باتجربه ساخته شده است، بسیاری از دردسرهای توسعه وب را برطرف میکند؛ بنابراین بدون اینکه بخواهید همهچیز را از ابتدا کدنویسی کنید، میتوانید بر روی نوشتن برنامهی خود تمرکز کنید.
این فریم ورک در سال 2003 و توسط یک تیم نرم افزاری فعال در حوزه پشتیبانی سایتهای خبری توسعه یافت. این گروه با دسته بندی کدهای نوشته شده و استفاده از دیزاین پترنهای مختلف، زمینه توسعه فریم ورک جنگو و معرفی آن را در سال 2005 فراهم کردند. جنگو تلاش میکند ساخت سایت را ساده کند و مشکلات تعامل با پایگاه دادهها را کاهش دهد. در این فریم ورک تلاش شده که همه اجزا در ارتباط با هم بوده و قابل استفاده مجدد باشند.
Django از اصل «دوباره انجامش نده (Don’t Repeat Yourself)» پیروی میکند و این، فریمورک Django را از نظر راندمان زمانی کارآمد میکند. به عبارت دیگر، نیازی به بازنویسی کدهای موجود نیست؛ زیرا جنگو این امکان را به شما میدهد که وبسایت خود را مانند قطعات یک مجموعه لگو در کنار یکدیگر قرار دهید. این فریمورک برای سیستمهای با حجم بالای اطلاعات مناسب است و به لطف بسیاری از ابزارهای کمکی میتواند زمان توسعه را کاهش دهد.
تکنولوژی جنگو علاوه بر سرعت بالا، ویژگی هایی دارد که تا حد زیادی نیازها و نگرانیهای برنامه نویسان را در نظر گرفته و به رفع آنها کمک میکند. این مسئله باعث شده که جنگو به یکی از برترین فریم ورکهای پایتون در سالهای اخیر تبدیل شود.
جنگو تقریباً امکان همه کارهایی را که ممکن است توسعه دهندگان بخواهند انجام دهند را فراهم میکند. از آنجا که هر آنچه شما نیاز دارید بخشی از یک “محصول” است، همه اینها به طور یکپارچه با هم کار میکنند و از اصول طراحی سازگار با هم پیروی میکنند و مستندات گسترده و به روز دارند.
جنگو با شعار انجام کارهای درست طراحی شده است و در حوزه امنیت، شما را از بسیاری از اشتباهات رایج امنیتی دور نگه میدارد. اگر از جنگو استفاده میکنید بابت مواردی مانند امنیت حسابهای کاربری و اطلاعات کاربران ورودی (Session) نگران نباشید.
همچنین جنگو تقریباً برای هر عملکردی که بخواهید گزینههایی را برای شما فراهم میکند (به عنوان مثال چندین پایگاه داده معروف، موتورهای templating و غیره)، همچنین میتوان در صورت لزوم از سایر مولفههای مورد نیاز نیز استفاده کرد.
جنگو از معماری مبتنی بر مولفه “عدم اشتراک گذاری (shared-nothing)” استفاده میکند. بدین معنا که هر قسمت از معماری مستقل از قسمتهای دیگر است و بنابراین میتواند در صورت لزوم جایگزین شده یا تغییر کند.
وجود یک تفکیک واضح بین قسمتهای مختلف به این معنی است که میتواند با افزودن سخت افزار در هر سطح، افزایش سرورهای ذخیره، سرورهای پایگاه داده یا سرورهای برنامه، امکان افزایش تعداد بازدیدکنندگان و در نتیجه افزایش رتبه سئو سایت را ایجاد کند. بسیاری از سایتهای پرترافیک از جنگو استفاده کرده اند تا خواستههای آنها را برآورده کند (به عنوان مثال Instagram و …).
کد جنگو با استفاده از اصول و الگوهای طراحی نوشته میشود که ایجاد کد قابل نگهداری ساده برای طولانی مدت و قابل استفاده مجدد را فراهم میکند. همچنین جنگو از اصول DRY یا Don’t Repeat Yourself استفاده میکند بنابراین هیچ کپی غیرضروری وجود ندارد، و میزان کدنویسی را کاهش میدهد. همچنین جنگو از فابلیت MVC نیز پشتیبانی میکند.
هنگام نصب برنامه، پنل مدیریت جنگو به طور خودکار نصب میشود. این باعث میشود که توسعه دهنده نیازی به ایجاد دستی پنل مدیریت نداشته باشد. با استفاده از برنامههای شخص ثالث، کنسول مدیریت پیش فرض جنگو میتواند بهبود یافته و متناسب با نیازهای پروژه شما سازگار شود. همچنین، این فریمورک به شما این امکان را میدهد که رابط کاربری پنل مدیریت پیش فرض را سفارشی کنید
برای ساخت انواع مختلفی از سایتها در زمینههای تولید محتوا، خبری، رسانههای اجتماعی و غیره میتوان از جنگو استفاده کرد. این فریم ورک با فریم ورکهای سمت کاربر (Client-Side ) تعامل زیادی دارد و توانایی تبدیل محتوا در فرمتهای مختلف HTML، JSON، XML و غیره را دارد.
برای استفاده از فریم ورک جنگو به آشنایی با زبان پایتون و توابع آن نیاز دارید. همچنین آشنایی با مواردی مانند:
معماری MVT که مخفف Model-View-Template است، معماری اصلی جنگو است که برای ساخت وب اپلیکیشنها استفاده میشود. این معماری به طور کلی به سه بخش تقسیم میشود:
در این بخش، تمامی کلاسها و به طور کلی هر چیزی که با دادههای دیتابیس ارتباط دارند تعریف میشوند. مدلها برای مدیریت ساختار دادهها و روابط بین آنها به کار میروند.
وظیفهی اصلی این مولفه، دریافت درخواستهای کاربران و پردازش آنهاست. ویوها همچنین مسئول انتخاب و پر کردن تمپلیتها به منظور نمایش نتایج به کاربر هستند.
از آنجایی که در معماری MVT، کتابخانهی جنگو وظیفه Controller را بر عهده میگیرد، مولفه Template به وجود میآید. Template ها، قالبهای HTML هستند که به کمک آنها صفحات وب ایجاد میشوند. آنها همچنین میتوانند شامل تگهای جنگو و فیلترهایی برای انجام عملیاتهای پیچیدهتر باشند.
سایتها و برنامههای بسیاری بر پایه جنگو ساخته شدهاند. بر اساس گزارشی از SimilarTech تا تاریخ می 2021، تعداد 83.359 وبسایت با جنگو ساخته شده است.
از سال 2010 و زمانی که اینستاگرام شروع به کار کرد، در ساخت اینستاگرام از Django استفاده میشد. جنگو به Mike Krieger و Kevin Systrom، بنیانگذاران اینستاگرام کمک کرد تا اولین نسخهی این برنامه را در مدتی حدود دو هفته توسعه دهند. به گفتهی Mike Krieger، شروع کار با جنگو بسیار آسان بود؛ زیرا نیازی به تصمیمگیری یا تنظیمات زیادی نداشت و آزمایش کردن را آسان میکرد. اینستاگرام به سرعت رشد کرد و این شرکت شروع به جستوجوی فناوریهای جدید برای تقویت سیستم خود کرد. آنها گزینههای مختلفی را در نظر گرفتند، اما در نهایت به این نتیجه رسیدند که این Python و Django است که از پس مقیاسِ کار آنها برمیآید.
دراپباکس یکی دیگر از نمونههای عالی Django است. دراپباکس از ابتدا از پایتون بهعنوان فناوری اصلی خود استفاده کرده است. آنها تاکنون از چندین نسخهی پایتون استفاده کردهاند و در حال حاضر نیز از نسخهی سفارشی پایتون 3.5 استفاده میکنند. دراپباکس با استفاده از جنگو، فایلها را ذخیره و به اشتراک میگذارد، حسابهای کاربری را در چندین دستگاه همگامسازی میکند و تاریخچه فایلها را ارائه میکند.
اسپاتیفای حاوی حجم وسیعی از دادهها است و کاربران را قادر میسازد تا بتوانند در هر دستگاهی به موسیقی گوش دهند. برای انجام این کار، اسپاتیفای از Python در کنار Django استفاده میکند.
جنگو که از ابتدا برای رسیدن به ددلاینهای فشردهی خبرگزاریها ساخته شد، همچنان در میان اپلیکیشنهای خبری محبوب است. یکی از بزرگترین نمونههای برنامهی جنگو از این نوع، وباپلیکیشن Washington Post، یکی از تأثیرگذارترین روزنامههای جهان، است. واشنگتن پست از فریمورک جنگو برای مدیریت حجم بالای اطلاعات و ارائه عملکرد سریع و کارآمد استفاده میکند.
موزیلا فایرفاکس از ابتدا با پایتون ساخته نشده بود، بلکه PHP و CakePHP فناوریهای مورد استفاده موزیلا بودند. اما با رشد آن، از آنجایی که مجبور بودند که روزانه با میلیونها جستوجو سروکار داشته باشند، نیاز فوری به اتخاذ فناوریهای جدید برای مدیریت ترافیک بالا و بهبود کارایی وجود داشت. اینجا بود که پایتون و جنگو وارد شدند. اکنون افزونههای مرورگر فایرفاکس و سایت پشتیبانی موزیلا با Django ساخته شدهاند.
از آنجایی که امنیت، یکی از قدرتمندترین قابلیتهای جنگو است، این فریمورک نقش بزرگی در اپلیکیشنهای دولتی و مراقبتهای بهداشتی ایفا میکند. ناسا، سازمان ملی هوانوردی و فضایی ایالات متحده، از فریمورک Django برای ارائه سایت خود به 2 میلیون بازدیدکنندهی خود در ماه استفاده میکند.
جنگو یک فریمورکِ پایتونِ سریع، ایمن و مقیاسپذیر است که برای تسهیل فرآیند توسعه کاربران خود سرمایهگذاری بسیاری کرده است. فلسفهی «دوباره انجامش نده» که جنگو براساس آن ساخته شده است، به توسعهدهندگان این امکان را میدهد تا از کدهایی که برای پروژههای دیگر خود نوشتهاند مجدداً استفاده کنند و این امر زمان مورد نیاز برای توسعهی محصول را کاهش میدهد.