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

django framework
تصویر یاسر دهقان

یاسر دهقان

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

جنگو چیست؟

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

در سال ۲۰۰۳، جنگو یک پروژه داخلی بود که توسط آدریان هولوواتی و سیمون ویلیسون آغاز شد و نسخه اولیه آن در جولای ۲۰۰۵ منتشر شد. نام جنگو از نام گیتاریست، جنگو راینهارت الهام گرفته شده است. در حال حاضر، بنیاد نرم‌افزاری جنگو (DSF) بر توسعه و چرخه انتشار آن نظارت می‌کند.

 

گیتاریست، جنگو راینهارت
گیتاریست، جنگو راینهارت

مزایای جنگو

ORM (object-relational mapper)

این ویژگی به ما این امکان را می دهد، بدون اتصال مستقیم به پایگاه داده بتوانیم پایگاه داده خود را کنترل کنیم؛ در صورتی که ORM وجود نداشت، ما مجبور بودیم، به صورت مستقیم به پایگاه داده متصل شده و با استفاده از زبان SQL، عملیات‌های مورد نیاز را انجام می‌دادیم؛ ولی ORM به ما این ویژگی را می دهد که بدون اتصال مستقیم به پایگاه داده از آن برای ذخیره و بازیابی داده ها استفاده کنیم.

امنیت

وب‌سایت ها اغلب هدف حملات هکرها هستند،؛ به ویژه وبسایت های که اطلاعات ورود کاربر یا اطلاعات مالی را ذخیره می‌کنند. جنگو ویژگی‌هایی را ارائه می‌دهد تا به حفاظت از برنامه و کاربران شما کمک کند. جنگو توسط توسعه دهندگان با تجربه و متخصص توسعه داده شده هست و این توسعه دهندگان تلاش زیادی برای امن بودن این فریمورک کرده اند. اگر شما یک برنامه وب را به تنهایی توسعه بدهید این امکان را دارد، که اشتباهی یک حفره امنیتی باز کنید. اما در جنگو موارد ایمنی رعایت می شود و باعث می شود برنامه امن تری توسعه بدهید.

مقایس پذیری

یکی از مشکلات برزگ توسعه دهندگان وب‌سایت مقایس پذیری هست. وب‌سایت شما در هر لحظه باید بتواند، تمام کاربران شما را پوشش دهد؛ اگر تعداد کاربران از حد پوشش وبسایت خارج شود، کاربران کندی را تجربه می کنند، که تجربه کاربری خوشایندی نیست؛ پس شما به وبسایتی نیازمند هستید، که هرچه سایت شما بزرگتر بشود بتواند آن را پوشش دهد و کنترل کند.
جنگو به شدت مقایس پذیراست و این کار را برای ما آسان کرده است. برای اینکه بیشتر به این موضوع پی ببرید باید دانست که یکی از معروف ترین شبکه های اجتماعی دنیا، اینستاگرام، بر پایه فریمورک جنگو توسعه داده شده است.

 

اجزای اصلی جنگو

جنگو از طرح MVT (Model-Template-View) برای توسعه وب استفاده می کند. این طرح شبیه به طرح معروف MVC (Model-View-Controller) هست.

در این طرح که اجزا به سه بخش Model ,View, Template تقسیم می شود؛ هر بخش کارهای زیر را انجام می دهد.

Model بخشی هست، که در آن ساختار داده ها مشخص می شود؛ این بخش رابط بین پایگاه داده و بخش View هست.
Template بخشی هست، که در آن داده های که از بخش View برای آن فرستاده شده است را برای کاربر به نمایش در می آورد
View بخش منطقی وبسایت هست؛ در این بخش View کارهای که برای برای آن برنامه ریزی شده است را انجام می دهد و در صورت نیاز داده های را از بخش Model بازیابی یا به آن اضافه می کنند و در آخر نتیجه را برای بخش Template می فرستد

حالا که با اجزای جنگو آشنا شدیم، بهتر است که با معماری آن و چرخه درخواست و پاسخ آشنا شویم.

معماری جنگو

معماری فریمورک جنگو
معماری فریمورک جنگو

وقتی که یک فرد یک درخواست را از مرورگر به یک URL خاص ارسال می‌کند، ابتدا Web Server این درخواست را دریافت کرده و سپس آن را تجزیه و تحلیل می‌کند. سپس، این درخواست را به Django ارسال می‌کند.

Django سعی می‌کند URL مطابقی در مجموعه‌اش پیدا کند و در اولین URL که با آدرس ارسال شده مطابقت دارد، توقف می‌کند. سپس، درخواست به ویو مرتبط با آن URL ارسال می‌شود. در ویو، عملیات‌هایی که برای آن برنامه‌ریزی شده است، انجام می‌شود و در صورت نیاز، داده‌ها از بخش Model بازیابی یا اضافه می‌شوند.

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

 

در صورتی که علاقه مند هستید، در مورد این فریمورک اطلاعات بیشتری کسب بکنید. می توانید کتاب های زیر را مطالعه بکنید.

Django For Beginners

Web Development with Django

ارسال دیدگاه