فریم ورک جنگو چیست؟
فریم ورک در واقع یک جعبه ابزار از Component هاست که برنامههای تحت وب به آنها نیاز دارند. هدف استفاده از فریم ورک برای جلوگیری از نوشتن کدهای تکراری برای کارها و وظایف تکراری است. فریم ورک Django یک چارچوب وب رایگان و متن باز است که به زبان Python نوشته میشود، این فریم ورک از الگوی معماری MVT یا model-view-template پیروی میکند. هدف اصلی فریم ورک جنگو ایجاد سایتهای پیچیده و مبتنی بر پایگاه داده را آسانتر نماید. این چارچوب بر قابلیت استفاده مجدد، کد کمتر، Pluggability اجزای سازنده، اتصال کم و توسعه سریع تاکید دارد. در این فریم ورک از Python در سراسر برنامه حتی برای فایلهای تنظیمات و مدلهای داده استفاده میشود. django نسبت به بسیاری از فریم ورکهای دیگر، امکانات و ویژگیهای بیشتری دارد و بسیاری از دردسرهای توسعه وب را از سر راه برداشته است.
تاریخچه فریم ورک جنگو
جنگو در اوایل دهه هشتاد شمسی توسط آدرین هولواتی و سایمون ویلیسون ساخته شد. آنها django را زمانی ساختند که توسعه یک وب اپلیکیشن با پایتون را شروع کرده بودند. در آن زمان، آنها در روزنامه لارنس ژورنال کار میکردند. به گفته ویلیسون در Quora، در آن زمان و قبل از تحولات PHP5، هر دو آنها از تلاش برای نگهداری سایتهای بزرگ توسعه داده شده با PHP علاقه زیادی به پایتون پیدا کرده بودند.

ابزارهای توسعه وب با پایتون در آن زمان، با استانداردهای مورد انتظار هولواتی و ویلیسون سازگاری نداشتند. به همین دلیل، آنها تصمیم گرفتند که چارچوب نرمافزاری جنگو را توسعه دهند. جیکوب کاپلنماس نیز در مراحل ابتدایی توسعه جنگو استخدام شد. django، حدوداً بعد از دو سال به صورت عمومی و تحت گواهینامه BSD منتشر شد. نام django، از جنگو راینهارت، نوازنده سرشناس گیتار گرفته شده است.
ویژگی های فریم ورک جنگو
Django سیستم نام گذاری خود را برای هر نوع کارکرد و مولفه ای دارد (به عنوان مثال، پاسخهای اچ تی تی پی “views”نامیده میشوند). همچنین یک پنل مدیریتی که کار کردن با آن آسانتر از لاراول و یا Yii است. سایر ویژگیهای فنی جنگو عبارتند از:

- سینتکس ساده
- وب سرور خودش است
- معماری هسته MVC
- باتریها شامل تمام موارد ضروری مورد نیاز برای حل مسائل مشترک هستند.
- یک ORM (شی رابطهای mapper)است.
- کتابخانه HTTP
- پشتیبانی میان افزار
- یک چارچوب تست واحد زبان پایتون.
مزایای فریم ورک جنگو
استفاده از فریم ورک جنگو مزایای زیادی دارد برخی از این مزایا را در زیر برای شما شرح خواهیم داد:
افزایش سرعت برنامه نویسی و کاهش هزینه
از آنجایی که جنگو یک فریم ورک است و پکیجهای متعددی نیز در آن وجود دارد که روز به روز نیز این پکیجها در حال بیشتر شدن هستند، استفاده از آن میتواند سرعت طراحی و پیاده سازی سایت را چندین برابر نماید. با توجه به اینکه زمان گذاشتن روی پروژه باعث بالا رفتن هزینهها خواهد شد، استفاده از django میتواند، از هزینههای زیاد و همچنین هدر رفت زمان نیز جلوگیری نماید.
پشتیبانی از کامپوننت ها
جنگو پشتیبانی از انواع کامپوننتها را میسر میسازد و تقریباً برای هر عملکردی که بخواهید گزینههایی را برای شما فراهم خواهد کرد. مثلا چندین پایگاه داده معروف، موتورهای templating و غیره. همچنین میتوانید در صورت لزوم از سایر مولفههای مورد نیاز نیز استفاده نمایید.
پشتیبانی از معماری MVC
در معماری MVC اولین واژه نشانگر کامپوننت MODEL است که مربوط به قسمت پایگاه دادهها است. واژه V نیز نشانگر کامپوننت VEIW است که وظیفه آن رندر کردن قسمت مدل برای کاربر میباشد. این قسمت به زبان ساده وظیفه نمایش به کاربر را برعهده دارد. واژه C نیز نشانگر کامپوننت CONTROLLER میباشد، قسمتی که درخواستها را از کاربران دریافت مینماید و با تعامل بین دو بخش دیگر MODEL و VEIW پاسخ مناسب به درخواست کاربران را به آنها را ارسال مینماید.

در تکنولوژی MVC که جنگو از آن استفاده میکند، تگهای HTML یا template سایت در فایلی جداگانه ذخیره میشوند. بخش کنترلی نیز به عنوان یک ماژول پایتون ایجاد و ذخیره خواهد شد. بنابراین برنامه نویس با بخش کنترلی و طراح با بخش html سروکار دارد که این مسئله باعث آمیختگی ظاهر نمایشی با کدنویسی میشود.
فریم ورک جنگو یک فریم ورک همه منظوره!
از فریم ورک جنگو میتوان تقریباً برای ساختن هر نوع وب سایتی اعم از سیستمهای مدیریت محتوا، طراحی پورتال و ویکیها، شبکههای اجتماعی و سایتهای خبری و طراحی سایت ریسپانسیو استفاده نمود. این فریم ورک میتواند با هر فریم ورک سمت مشتری دیگری نظیر فریم ورک های php نیز کار کند و تقریباً در هر قالب از جمله HTML، RSS، JSON، XML، PHP و غیره محتوایی را ارائه نماید.
امنیت فریم ورک جنگو
جنگو با ارائه یک فریم ورک قدرتمند جهت محافظت خودکار از سایت طراحی شده است و به توسعه دهندگان کمک میکند تا از بسیاری از اشتباهات معمول امنیتی جلوگیری نمایند. در مقایسه php و python یکی از موضوعاتی که باعث زیر سوال بردن امنیت خواهد شد این است که اگر زمانی در کد برنامه نویسی php خطایی رخ دهد، مسیر خطا با جزییات کامل آن نمایش داده میشود.

این مسئله باعث شناسایی دایرکتوریها و نوع کدنویسی در برخی از موارد خواهد شد. اما در جنگو چنین حالتی وجود ندارد و اگر خطایی وجود داشته باشد، به صورت یک پیغام از طریق تمپلیتها برای مرورگر ارسال خواهد شد. به عنوان مثال، جنگو یک روش ایمن برای مدیریت حسابهای کاربری و رمزهای عبور کاربر، اجتناب از اشتباهات رایج مانند قرار دادن اطلاعات جلسه در کوکیها و در جاهایی که آسیب پذیر است یا ذخیره مستقیم رمزهای عبور به جای هش نمودن آنها و… را فراهم مینماید.
مقیاس پذیری فزیم ورک جنگو
Django به طور مداوم بروزرسانی میشود تا به توسعه دهندگان اجازه دهد برنامههای وب جدید و مدرن بسازند. به طور همزمان توسعه دهندگان میتوانند بدون ایجاد تغییرات گسترده، مقیاس و گسترش فریم ورک وب را با ایجاد اصلاحاتی در کامپوننتهای تعبیه شده توسعه دهند. آنها حتی این انتخاب را دارند که این کامپوننتها را طبق نیازهای دقیق پروژه جداسازی و یا جایگزین کنند. جنگو از معماری مبتنی بر مولفه عدم اشتراک گذاری استفاده مینماید. بدین معنا که هر قسمت از معماری مستقل از قسمتهای دیگر است و بنابراین میتواند در صورت لزوم جایگزین شده یا تغییر کند. Django به گونهای ساخته شده است که قادر خواهد بود هر نوع قطعات سخت افزاری را مدیریت نماید.
گسترش منابع در فریم ورک جنگو
در فریم ورک جنگو میتوانید منابع را گسترش دهید به این معنی که با افزودن سخت افزار در هر سطح، افزایش سرورهای ذخیره، سرورهای پایگاه داده یا سرورهای برنامه، امکان افزایش تعداد بازدیدکنندگان و در نتیجه افزایش رتبه سئو سایت را ایجاد نماید. بسیاری از سایتهای پرترافیک از جنگو استفاده میکنند تا خواستههای آنها را برآورده نماید.
پشتیبانی از چندین سرور
جنگو به زبان پایتون نوشته شده است و در بسیاری از سیستم عاملها اجرا میشود. این بدان معناست که شما به هیچ بستر سرور خاصی متکی نیستید و میتوانید برنامههای خود را بر روی بسیاری از هاستها از جمله هاست لینوکس، سرورهای اختصاصی و مجازی، هاست ویندوز و Mac OS X اجرا نمایید.

همچنین جنگو توسط بسیاری از ارائه دهندگان خدمات میزبانی وب، که اغلب زیرساختهای خاص و مستندات میزبانی سایتهای جنگو دارند نظیر هاست پایتون نیز ارائه میشود.
قابلیت ارتقا و نگهداری کد
کد جنگو با استفاده از اصول و الگوهای طراحی نوشته میشود که ایجاد کد قابل نگهداری ساده برای طولانی مدت و قابل استفاده مجدد را فراهم میکند. همچنین جنگو از اصول Don’t Repeat Yourself استفاده میکند بنابراین هیچ کپی غیرضروری در آن وجود ندارد، و میزان کدنویسی را کاهش میدهد. جنگو از فابلیت MVC نیز پشتیبانی میکند.
سازگاری با پایگاه داده ها و سیستم عامل های بزرگ
این روزها کاربران با دستگاهها و سیستمهای مختلفی به مرورگرها و سایتها متصل میشوند. از آنجایی که جنگو سیستم عاملهای بزرگی همچون ویندوز، لینوکس و مک را پشتیبانی میکند، قابل دسترس بودن وب سایت را افزایش میدهد. همچنین به دلیل وجود سیستم ORM در جنگو به راحتی میتوان با اغلب پایگاه دادهها کار کرد.
سئو و بهینه سازی
کدی که در پایتون نوشته شده حتی برای افراد غیر حرفه ای نیز قابل خواندن و درک است. این یکی از عواملی است که باعث میشود برنامههای وب پایتون، سازگار با مبانی سئو و بهینه سازی سایت باشند. با توجه به رویکردی که برنامه نویس سایت و سئو کار سایت دارند و کار هر دو جدا از هم است اما مکمل هم هستند، جنگو به شکلی ساخته شده است که ضمن کدنویسی استاندارد موارد مربوط به سئو را نیز رعایت کند. جنگو URLهای معنایی بر اساس عنوان و محتوای صفحه سایت تولید میکند. همچنین برنامههای جنگو سایر ویژگیهای بهینه سازی موتور جستجو را نیز به راحتی پیاده سازی مینمایند.
معایب فریم ورک جنگو
فریم ورک جنگو علاوه بر مزایایی که دارد یک سری معایب نیز دارد که در زیر برای شما آنها را شرح خواهیم داد:

- سیستم ORM ارائه شده توسط Django کار با چندین دیتابیس و انجام عملیات مشترک پایگاه داده را برای توسعه دهندگان سادهتر میکند. اگرچه این سیستم مورد استفاده توسط فریم ورک وب از ویژگیهای قدرتمند تعبیه شده توسط سایر سیستمهای ORM که به طور گسترده استفاده میشوند، برخوردار نیست. همچنین به توسعه دهندگان اجازه نمیدهد که به طور کامل از جعبه ابزار کامل Python SQL بهره مند شوند.
- ممکن است Django گزینه مناسبی برای وب سایتهای استاتیک یا تک صفحهای نباشد.
- تمام ویژگیهای Django همراه با کد فراوان است. این پردازش و زمان سرور را میطلبد که برای وب سایتهای سطح پایین که حتی با پهنای باند بسیار کم نیز قابل اجرا هستند برخی از عملکردها را با مشکل روبه رو میکند.
- ویژگیهای موثر ارائه شده توسط Django ایجاد برنامههای وب بزرگ و پیچیده را برای توسعه دهندگان آسان میکند. با این حال توسعه دهندگان هنگام پیاده سازی برنامههای وب کوچک و ساده به برخی از این ویژگیهای پیشرفته نیاز ندارند. ویژگیهای اضافی حتی بر عملکرد وب اپلیکیشنهای کوچک تأثیر منفی میگذارد.
- بیشتر فریم ورک های وب با ایجاد هر پردازش به صورت جداگانه، عملکرد برنامههای وب را بهبود میبخشند. Django به هیچ وجه مانند دیگر فریم ورک های وب، به پردازشهای فردی اجازه نمیدهد که همزمان با چندین درخواست مواجه شوند.
- Django بسیار گسترده است و به عنوان یک نرمافزار یکپارچه در نظر گرفته میشود. این امر جامعه را قادر میسازد تا صدها ماژول و برنامه قابل استفاده مجدد را توسعه دهد، اما سرعت توسعه Django را نیز محدود کرده است. به علاوه Django باید سازگاری را حفظ کند، به همین خاطر به آرامی تکامل مییابد.