درک الگوی MVC در جنگو

Understanding the MVC Pattern in Django

django-mvt

اگر مقاله «جنگو (Django) چیست؟ آشنایی با محبوب‌ترین فریم‌ورک پایتون» را خوانده باشید به این نکته پرداخته شد که فریمورک جنگو (django) که برای توسعه وب با استفاده از زبان پایتون ساخته شده است به مانند اکثر فریمورک های مدرن و سطح بالا از الگو معماری یا طراحی MVC پشتیبانی می کند، با این تفاوت که این الگو را در فریمورک جنگو MVT می نامند. همچنین این نکته را گوشزد کردیم که این تفاوت در ظاهر کلمات صرفا همان تفاوت در ظاهر کلمات است و از لحاظ مفهومی این دو الگو دقیقا یکی هستند. در این مقاله با ما همراه باشید تا بیشتر در این باره صحبت کنیم.

 MVC چیست؟

MVC مخفف MODEL VIEW CONTROLLER، یک الگوی طراحی (design pattern) یا یک الگوی معماری (architectural patterns) است که در دنیای برنامه نویسی استفاده می شود. (توضیح: MVC را معمولا در منابع مختلف هم یک الگو طراحی (design pattern) و هم الگو معماری (architectural patterns) می نامند. اما در واقع این دو مفهوم، دو چیز متفاوت هستند که مرز تشخیص بین این دو بسیار ظریف است و معمولا بسته به نوع پروژه و دیدگاه مهندس نرم افزار می توان مشخص کرد که MVC در پروژه مذکور به عنوان الگو طراحی به کار برده شده است یا به عنوان الگو معماری.)

مولفه های MVC

MODEL: به صورت کلی می توان گفت این بخش وظیفه مدیریت داده ها را برعهده دارد. در واقع این مولفه به عنوان یک رابط کاربری به داده های موجود در پایگاه داده دسترسی دارد و به شما اجازه می دهد بدون درگیر شدن با پیچیدگی ها و جزییات پایگاه داده خود به آسانی با داده های خود ارتباط برقرار کنید و به آنها دسترسی داشته باشید.

VEIW: همانطور که از نامش هم پیداست این بخش مربوط به ظاهر سایت است که وظیفه برقراری ارتباط با کاربر (client)، گرفتن داده از کاربر و نمایش داده های آماده به کاربر است. این بخش درگیر منطق برنامه نخواهد بود و صرفا با ظاهر سایت سر و کار دارد.

CONTROLLER: این بخش را در واقع می توان واسطی بین MODEL و VIEW دانست که منطق برنامه نیز در همین بخش جای گرفته است. به عنوان مثال وقتی شما درخواستی را برای سایت ارسال می کنید این درخواست از طریق بخش VIEW به CONTROLLER ارسال می شود و تمام کارهای پردازش و عملیات های منطقی در همین بخش CONTROLLER صورت می گیرد، اگر نیاز بود CONTROLLER با بخش MODEL ارتباط می گیرد و با دریافت داده ها و پردازش و عملیات روی آن ها، آن را به VIEW فرستاده تا برای شما به نمایش گذاشته شود.

حالا که با مفهوم MVC آشنا شدیم، به سراغ پیاده سازی این الگو در فریمورک جنگو با نام MVT خواهیم رفت. همچنین قبل از ورود به موضوع MVT در جنگو می توانید در تصویر زیر شمای گرافیکی از نحوه عملکرد الگو MVC را مشاهده کنید:

نحوه عملکرد الگو MVC در جنگو

جنگو و MVT

همانطور که گفته شد فریمورک جنگو از مفهوم و منطق الگو MVC با نام الگو MVT در خود استفاده می کند.

MVT مخفف MODEL VIEW TEMPLATE می باشد.

مولفه های MTV

MODEL: تعریف این مولفه دقیقا مانند MODEL در الگو MVC است. این بخش مربوط به هر چیزی است که با دسترسی به داده ها و اعتبارسنجی داده ها (Data Validation) ارتباط داشته باشد.

VIEW: این بخش در واقع متناظر با CONTROLLER در MVC می باشد و نباید به هیچ عنوان با VIEW در MVC اشتباه گرفته شود. این بخش به عنوان پلی ارتباطی بین MODEL و TEMPLATE ایفای نقش می کند که تمام منطق پروژه در این بخش جای گرفته است.

TEMPLATE: این بخش نیز متناظر با VEIW در MVC می باشد. این بخش اساسا با آنچه که قرار است برای کاربر به نمایش گذاشته شود و چگونگی این به نمایش درآمدن سر و کار دارد.

در تصویر زیر به صورت ساده نحوه عملکرد الگو MTV را مشاهده می کنید:

نحوه عملکرد الگو MVT در فریم ورک جنگو

درک این نکته که مفهوم MTV همان MVC است و VIEW در MTV ناظر به بخش منطقی برنامه است نه قسمت ظاهر سایت، نکته هایی بودند که دانستن آنها قبل از شروع توسعه وب با فریمورک قدرتمند جنگو لازم و ضروری به نظر می رسید که امیدوارم با مطالعه این مقاله به خوبی آن را درک کرده باشید.

همچنین تصویر زیر که به پیاده سازی الگو MVC در جنگو با نام MTV و تفاوت های ظاهری اش پرداخته شده می تواند در به خاطر سپردن راحت تر مفهوم گفته شده به شما کمک کند.

پیاده سازی الگو MVC در جنگو با نام MTV


منبع: وب سایت medium

تمام فصل‌های سری ترتیبی که روکسو برای مطالعه‌ی دروس سری آموزش جنگو در پایتون توصیه می‌کند:
نویسنده شوید

دیدگاه‌های شما (1 دیدگاه)

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

امیر حسین
01 اسفند 1398
با تشکر این سایت کمک شایانی به من کرد

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.