یک فریمورک با معماری MTV میباشد که برای ساخت اپلیکیشنهای وب مورد استفاده قرار میگیرد. جنگو برنامهنویسان وب را قادر میسازد تا کدهای تمیز، کارآمد و قدرتمند بنویسند.
علاوه بر اینکه در لیست محبوبترین فریمورکهای وب جهان حضور دارد، جنگو یکی از پر استفادهترین تکنولوژیها برای توسعه وب میباشد. این فریمورک توسط اینستاگرام، یوتیوب، گوگل و حتی ناسا برای توسعه وبسایتشان بکار رفته است.
ساختار کاری جنگو به چه شکل است؟ معماری MVT
جنگو از معماری سه لایه MVT استفاده میکند که مخفف Model -View – Template میباشد. این معماری نوع تغییر داده شده MVC برای فریمورک جنگو بوده و به آن بسیار شبیه است.هنگامی که سرور جنگو، یک request (درخواست) دریافت میکند، مسیریاب URL آن request را به view مناسب هدایت میکند. سپس لایه view داده را از لایه model دریافت میکند و با استفاده از متدها و فانکشنهایی که در آن نوشته میشود، لایه template را پر میکند و آنرا به کاربر ارسال میکند.
کلیک کنید : بهترین دوره آموزش جنگو (Django) به زبان فارسی
معماری MVT در جنگو چیست؟
وقتی که در مورد برنامههای کاربردی که از واسط کاربری برخوردارند (برنامههای تحت وب یا Desktop) صحبت میشود، منظور معماری مدل-نمایش-کنترلگر یا MVC است. همانطور که از نام این معماری مشخص است، معماری MVC از سه مؤلفه اصلی یعنی «مدل» (Model)، «نمایش» (View) و «کنترلگر» (Controller) تشکیل شده است.معماری MVT، کمی متفاوتتر از معماری MVC است؛ در اصل، تفاوت بنیادی میان این دو معماری این است که در مدل MVT، کتابخانه Django مدیریت مؤلفه Controller را بر عهده میگیرد (مؤلفه Controller، کد نرمافزاری است که تعامل میان مؤلفههای Model و View را کنترل میکند.
منظور از Model در جنگو چیست و چند مدل داریم؟
در فریمورک جنگو با استفاده از مدل قدرتمند و بسیار مفید ORM، انجام عملیات مختلف با دیتابیس بسیار ساده شده و پروسه توسعه تسریع یافته است. ORM مخفف Object-Relational-Mapping است و بدون آن، توسعه دهنده باید تمامی جداول را خودش ایجاد کند و برای انجام هرگونه عملیات با دیتابیس، کوئری مربوطه را باید خودش بنویسد که گاها این روند میتواند در پروژههای بزرگ بسیار پیچیده و کسل کننده باشد.ORM به شما این امکان را میدهد تا تمامی کوئریهای دیتابیس را با دستورات ساده پایتون اجرا کنید و همچنین متدهای آمادهای در آن برای پیادهسازی عملیات crud با دیتابیس تعبیه شدند.
در حقیقت، برنامهنویس نیازی ندارد تا به تمامی روشهای پیچیده SQL را یکجا مسلط باشد. برخلاف سایر فریمورکها، تمامی مدلها در یک فایل به اسم models.py قرار میگیرند و همین مورد میتواند در روند توسعه پروژههای بزرگ بسیار مفید و کارآمد باشد. Django
کلیک کنید : بهترین دوره آموزش جاوا (Java) به زبان فارسی
منظور از Template در جنگو چیست؟
لایه template مشابه لایه view در معماری MVC است و هدف آن نمایش داده و اطلاعات به کاربر بوده و در حقیقت منطق ظاهری برنامه (Display Logic) میباشد. اگر شما با templating در زبانها و فریمورکهای دیگر از جمله لاراول آشنا باشید، تقریبا در جنگو هم به این شکل است.شما از یک سینتکس مشابه HTML استفاده میکنید که بعدا به HTML کامپایل میشود و شامل تمامی دادههای مربوطه میباشد. البته که فرمتهای غیر HTML هم وجود دارند، مثلا اگر خواستید میتوانید از سندهای XML یا فایلهای JSON و … استفاده کنید.
منظور از View در جنگو چیست؟
View در جنگو لایه بیزینس از معماری سه لایه MVT است. این لایه شامل فانکشنها و متدهایی میشود که موجب دریافت و پردازش درخواست کاربر و ارسال نتیجه معتبر برای کاربر میشود. این لایه داده را از Model دریافت میکند و به هر کدام از template ها دسترسی به داده خاصی را میدهد.کلیک کنید : بهترین دوره آموزش C++ ( سی پلاس پلاس ) به زبان فارسی
مزایای استفاده از فریمورک جنگو چیست؟
پشتیبانی از انواع کامپوننتها : همچنین جنگو تقریباً برای هر عملکردی که بخواهید گزینههایی را برای شما فراهم میکند (به عنوان مثال چندین پایگاه داده معروف، موتورهای templating و غیره)، همچنین میتوان در صورت لزوم از سایر مولفههای مورد نیاز نیز استفاده کرد.مقیاس پذیر بودن : جنگو از معماری مبتنی بر مولفه “عدم اشتراک گذاری (shared-nothing)” استفاده میکند. بدین معنا که هر قسمت از معماری مستقل از قسمتهای دیگر است و بنابراین میتواند در صورت لزوم جایگزین شده یا تغییر کند.
- امنیت : جنگو با ارائه یک فریمورک قدرتمند جهت محافظت خودکار از وب سایت طراحی شده است و به توسعه دهندگان کمک میکند تا از بسیاری از اشتباهات معمول امنیتی جلوگیری کنند.
- به عنوان مثال، جنگو یک روش ایمن برای مدیریت حسابهای کاربری و رمزهای عبور کاربر، اجتناب از اشتباهات رایج مانند قرار دادن اطلاعات جلسه (Sessions) در کوکیها و در جاهایی که آسیب پذیر میباشد یا ذخیره مستقیم رمزهای عبور به جای هش نمودن آنها و… فراهم میکند.
- همچنین جنگو به طور پیش فرض از بسیاری از آسیب پذیریها نیز محافظت میکند، از جمله تزریق SQL، برنامه نویسی بین سایت، جعل درخواست بین سایت و کلیک کردن و… .
-
امکان گسترش منابع :
- وجود یک تفکیک واضح بین قسمتهای مختلف به این معنی است که میتواند با افزودن سخت افزار در هر سطح، افزایش سرورهای ذخیره، سرورهای پایگاه داده یا سرورهای برنامه، امکان افزایش تعداد بازدیدکنندگان و در نتیجه افزایش رتبه seo سایت را ایجاد کند. بسیاری از سایتهای پرترافیک از جنگو استفاده کرده اند تا خواستههای آنها را برآورده کند (به عنوان مثال Instagram و Disqus و …
-
قابلیت ارتقا و نگهداری :
- کد جنگو با استفاده از اصول و الگوهای طراحی نوشته میشود که ایجاد کد قابل نگهداری ساده برای طولانی مدت و قابل استفاده مجدد را فراهم میکند. همچنین جنگو از اصول DRY یا Don’t Repeat Yourself استفاده میکند بنابراین هیچ کپی غیرضروری وجود ندارد، و میزان کدنویسی را کاهش میدهد. همچنین جنگو از فابلیت MVC نیز پشتیبانی میکند.
- پنل مدیریت : هنگام نصب برنامه، پنل مدیریت جنگو به طور خودکار نصب میشود. این باعث میشود که توسعه دهنده نیازی به ایجاد دستی پنل مدیریت نداشته باشد. با استفاده از برنامههای شخص ثالث، کنسول مدیریت پیش فرض جنگو میتواند بهبود یافته و متناسب با نیازهای پروژه شما سازگار شود.
- مستندات زیادی برای فریم ورک Django موجود است : Django در شروع کار خود بیش از هر پروژه ی Open Source دیگری تحقیقات و مقالات ارائه شده دارد و این آمار در طول زمان بهتر و بیشتر هم شده است. در ابتدای ارائهی این فریم ورک، همین مستندات موجود بود که این برنامه را خاص میکرد. بیشتر فریم ورک های دیگر، از یک سیستم الفبایی برای ارائه ماژول ها و ویژگی ها استفاده می کردند. این رویه برای رجوع سریع مناسب است اما در زمانی که شما به دنبال انجام کاری مفید باشید، کمکی به شما نمی کند.
- دسترسی کافی به Packageهای Django وجود دارد : جامعه ی Django، درست مثل جامعه یPython، ابزار ها و Package های زیادی برای کاربران فراهم کرده است. کلمه ی Django را در PyPI تایپ کنید و بیش از ۴۰۰۰ Package موجود برای کاربران در اختیار شما قرار خواهد گرفت. این فریم ورک تقریبا تمامی ویژگی ها و امکاناتی را که شما دنبال آن هستید را در خود جای داده است.
- منبع : وب سایت توسینسو