فریم ورک جنگو یکی از پرکاربرد ترین فریم ورک های پایتون می باشد که در حال حاضر به شدت مورد علاقه برنامه نویسان قرار گرفته است. در زبان برنامه نویسی پایتون فریم ورک های دیگری از جمله flask، FastApi، tornado و غیره نیز مورد استفاده قرار می گیرند. هر کدام از این فریم ورک ها مزایای مختص به خود را دارند. بدون شک یکی از فریم ورک هایی که در بازار کار متقاضی بسیاری دارد جنگو می باشد. به همین دلیل در این مقاله آموزشی قصد داریم فریم ورک جانگو را به صورت اجمالی مورد بررسی قرار دهیم.
تفاوت بین فریم ورک و کتابخانه
قبل از معرفی فریم ورک جنگو ابتدا بایستی به این مورد بپردازیم که فریم ورک چیست و چه تفاوتی با کتابخانه دارد. زمانیکه ما در زبان پایتون اقدام به کد نویسی می کنیم، فایلی که به عنوان یک فایل نهایی در اختیار داریم، یک ماژول نامیده می شود. از ترکیب چندین ماژول یک پکیج به وجود می آید؛ البته یک پکیج می تواند از یک ماژول هم تشکیل شده باشد. تعدادی از پکیج ها نیز با یکدیگر تشکیل یک کتابخانه (library) را می دهند.
برخی به اشتباه کتابخانه و فریم ورک را مشابه یکدیگر می دانند. با اینکه فریم ورک ها و کتابخانه ها شباهت هایی با یکدیگر دارند ولی به هیچ عنوان یکسان نیستند و در کارایی تفاوت زیادی دارند. در برنامه نویسی زمانیکه کدها را می نویسیم بر اساس نیاز ممکن است یکسری کتابخانه ها و پکیج ها را اضافه نماییم. فرضا می توان پکیج math را برای استفاده از توابع ریاضی اضافه نمود؛ سپس از متدهای پکیج مورد نظر در برنامه استفاده کرد.
اما در فریم ورک ها روند کار کاملا متفاوت می باشد. در واقع فریم ورک ساختاری است که شبیه به یک اسکلت عمل می کند و این فریم ورک است که کدهای برنامه نویس را کنترل می کند. فریم ورک مشخص می کند که کدها در کجا و به چه شکلی نوشته شوند و همه آنها را مدیریت می کند. به طور کلی فریم ورک کار ما را برای برنامه نویسی راحت می کند و خیلی از کتابخانه های آماده و کاربردی را برای ما آماده می کند. در ادامه مقاله مباحثی را درباره فریم ورک جنگو ارائه می کنیم.
فریم ورک جنگو چیست
اما در این بخش بایستی به این سوال که اصلا فریم ورک جنگو چیست پاسخ دهیم. جنگو یک فریم ورک MVT پایتون جهت ساختن برنامه های کاربردی تحت وب میباشد. در زبان برنامه نویسی c# و asp.net معماری mvc ساختار برنامه را به سه بخش مدل (m)، ظاهر (v) و کنترلر (c) تقسیم میکند. ولی در جنگو این قضیه مقداری تفاوت دارد. در جنگو معماری mvt ساختار برنامه را به سه بخش مدل (m)، ظاهر (v) و تمپلیت (t) تقسیم بندی میشود.
در این معماری بخش کنترلر به عهده خود جنگو است و به همین دلیل به جای آن از تمپلیت ها استفاده می شود. ویوها (v) در mvt نسبت به mvc متفاوت می باشند؛ زیرا منطق کدها در mvc بر عهده کنترلر می باشد ولی در mvt بر عهده ویو (view) است. وب سایت ها و اپلیکیشن های بسیار زیادی از جنگو استفاده میکنند. از مشهورترین این وب سایت ها می توان به اینستاگرام، یوتیوب، گوگل، اسپاتیفای، موزیلا، پینترست، دراپ باکس، ناسا و غیره اشاره نمود.
ساختار فریم ورک جنگو
در این بخش به طور کلی ساختار فریم ورک جنگو را مورد بررسی قرار می دهیم. همانطور که عنوان شد؛ جنگو از معماری mvt که یک ساختار فوق العاده برای اپلیکیشن های تحت وب می باشد استفاده می کند. در ابتدا ما urlها را داریم که در واقع همان لینک هایی هستند که در بالای هر مرورگر وجود دارد و از طریق این لینک ها دسترسی به وب سایت ها امکان پذیر می شود. این urlها یک http request به سمت ویو (view) ارسال می کنند. در واقع کدهای ما در ویو قرار دارند و واسطی بین مدل ها و تمپلیت ها می باشد. ویو یکسری اطلاعات را از مدل می خواند و یا در مدل قرار می دهد. ویوها با استفاده از این اطلاعات، تمپلیت ها که در واقع همان صفحات html هستند را برای نمایش آماده می سازند. در نهایت یک پاسخ یا http response را بر روی url مد نظر نمایش می دهد.
مزایا و معایب جنگو
حال سوال اینجاست که اصلا چرا بایستی فریم ورک django را انتخاب نمود و مهمترین مزایا و معایب فریم ورک جنگو شامل چه مواردی می باشند. اولین مزیت خوب جنگو پشتیبانی از قابلیت مدل اشیاء به مدل رابطه ای ORM می باشد. برنامه نویس های مختلف از دیتابیس های متفاوتی همچون mysql، oracle و غیره استفاده می نمایند. حال اگر یک پروژه به شخص دیگری واگذار گردد و شخص مورد نظر با یک دیتابیس متفاوت دیگر کار کند، مجبور است کدهای دیتابیس قبلی را پاک کرده و از ابتدا شروع به نوشتن کدها کند. انجام چنین کاری بسیار دشوار است و شرایط را برای ادامه کار پیچیده می کند. یک برنامه نویس به حد کافی کدنویسی می کند و اگر قرار باشد برای دیتابیس نیز به این اندازه کدنویسی شود، وقت زیادی از برنامه نویس به هدر می رود. البته در این شرایط ممکن است مشکلات امنیتی خطرناکی نیز به وجود آید.
اما جنگو این قابلیت را فراهم کرده است که برنامه نویس به صورت یک کلاس مدل ها را تعریف نماید. به این ترتیب فقط کافیست که از جنگو فرضا یک جدول با یکسری مشخصات را درخواست کنیم. حال خود جنگو این کدها را برای دیتابیسی که به آن متصل است تبدیل به جداول مد نظر برنامه نویس می کند. به غیر از کاربرد جنگو در زمینه ORM می توان به سایر مزایای این فریم ورک از جمله پشتیبانی چند زبانه، پشتیبانی از پلتفرم ها و فریم ورک های مختلف، داکیومنت کامل و جامع، پکیج های مختلف و کاربردی، بررسی و آپدیت لحظه ای، پشتیبانی فوق العاده از سئو، امنیت بالا، مقیاس پذیری، قابلیت حمل و یادگیری آسان اشاره نمود. همچنین مهمترین ایراد جنگو نیز عدم انعطاف پذیری این فریم ورک برای پروژه های کوچک می باشد.
پیش نیازهای یادگیری جنگو
یک شخص علاقمند قبل از شروع آموزش فریم ورک جنگو بایستی یکسری پیش نیازها را فرا گرفته باشد. اولین پیش نیاز آشنایی با مباحث فرانت اند است. فرانت اند شامل مباحث html، css و javascript می باشد که البته نیاز نیست که برنامه نویس یک طراح فرانت اند حرفه ای باشد. اما لازم است که حتما یک آشنایی کلی با html، css و javascript داشته باشد. زیرا برنامه نویس قرار است کدها را در بین صفحات html قرار دهد و اگر با این کدها آشنایی نداشته باشد، ممکن است که با مشکل مواجه شود.
پیش نیاز دیگر تسلط بر مباحث اصلی زبان برنامه نویسی پایتون می باشد. لزومی ندارد که برنامه نویس به مباحث خیلی پیچیده پایتون مسلط باشد. اما حتما لازم است که به مباحث اصلی پایتون از قبیل توابع، کلاس ها و غیره تسلط کافی داشته باشد.
اگر دوست دارید که کار با این فریم ورک برنامه نویسی را به خوبی یاد بگیرید، بهترین، کوتاه ترین و پربازده ترین راه برای شما ثبت نام در یک بوت کمپ برنامه نویسی است. بوت کمپ پایتون – جنگو از مجموعه های بوت کمپ برنامه نویسی مپصا اچ آر است که می توانید برای یک یادگیری حرفه ای خود را به این اساتید مجرب این مجموعه بسپارید و در صورت گذراندن دوره به صورت موفق، برای استخدام به شرکت های معتبر متقاضی نیرو معرفی شوید.