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

 

 

 #  معماری MVC

معماری MVC برای مدت طولانی در صنعت نرم افزار وجود داشته است. اکثر زبان‌های برنامه‌نویسی با تغییراتی جزئی معماری MVC را پیاده سازی میکنند. این معماری هر برنامه را به سه بخش تقسیم میکند. معماری MVC مخفف model-view-controller است که در زیر هر سه بخش را به صورت جزئی توضیح میدهیم:

 

 

 +  بخش model

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

 

 +  بخش view

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

 

 +  بخش controller

بخش controller مسئول انجام تمام عملیات‌هایی است که در پشت صحنه اتفاق میفتد. اگر کاربر درخواستی را ارسال کند، این درخواست ابتدا به controller رفته، پردازش شده و به بخش‌های دیگر ارسال میشود. کامپوننت controller میتواند اطلاعات را از model گرفته و در بخش view به کاربر نمایش دهد. در جنگو بخش controller نداریم.

 

 

توضیح معماری mvt جنگو

 

 #  معماری MVT

جنگو ترجیج میدهد معماری خودش را پیاده کند. معماری که جنگو از آن استفاده میکند MVT نام دارد که بسیار مشابه MVC است. MVT مخفف model-view-template است. این سه بخش مشابه سه بخشی هستند که در معماری MVC بودند اما با نام‌هایی متفاوت. در زیر این سه بخش را توضیح میدهیم:

 

 

 +  بخش model در جنگو

دقیقا مشابه model در mvc، این بخش در جنگو هم مسئول مدیریت ساختار اطلاعات ذخیره شده در دیتابیس است. این model در جنگو با model معماری mvc هیچ تفاوتی ندارد.

 

 +  بخش view در جنگو

برخلاف معماری mvc که در آن view مسئول نمایش اطلاعات به کاربر نهایی بود، در جنگو این بخش مسئول پردازش درخواست‌ها است. این بخش رابطی‌ است که بخش‌های model و template را به هم وصل میکند. زمانی که کاربر درخواستی را ارسال میکند، درخواستش در این بخش پردازش شده و پاسخ مناسب به او نشان داده خواهد شد. میتوان گفت که view در جنگو همان controller است در معماری mvc.

 

 +  بخش templates در جنگو

کامپوننت templates معادل view است در معماری mvc. در این بخش نتیجه نهایی به کاربر نشان داده میشود. همچنین میتوانید در این بخش از کاربر اطلاعاتی را دریافت کرده و به دیگر بخش‌های ارسال کنید. نمایش templates جنگو وظیفه بخش view است. تمام فایل‌های استاتیک مانند فایل‌های html یا css در این بخش مدیریت میشوند.

 

 

همانطور که در تصویر بالا میبینید، زمانی که یک کاربر درخواستی را ارسال میکند، مراحل زیر طی میشود:

  1. کاربر یک درخواست از طریق url به برنامه‌ جنگویی ارسال میکند.
  2. جنگو به دنبال یک url معتبر در خود میگردد.
  3. اگر url به view خاصی متصل باشد آنگاه آن view صدا زده خواهد شد.
  4. در صورت نیاز view به model متصل شده و اطلاعات مناسبی را دریافت خواهد کرد.
  5. در آخر view یک بخش از templates، همراه با اطلاعات دریافتی از model را به کاربر نمایش میدهد.

 

 



0

intro

8:58

رایگان

1

creating project

9:55

رایگان

2

MVT

8:1

رایگان

3

creating super user

7:21

رایگان

4

creating first app

11:14

رایگان

5

templates

10:8

رایگان

6

tags/filters

12:32

رایگان

7

models

14:41

رایگان

8

reading from models

10:40

رایگان

9

extends template

8:19

رایگان

10

bootstrap

7:57

رایگان

11

detail page

13:11

رایگان

12

url names

5:31

رایگان

13

delete

7:26

رایگان

14

messages

11:3

رایگان

15

create

15:8

رایگان

16

forms

21:40

رایگان

17

modelForms 1

11:30

رایگان

18

modelForms 2

6:20

رایگان

19

user

12:18

رایگان

20

register

17:52

رایگان

21

login

10:47

رایگان

22

logout

3:11

رایگان

23

request

14:37

رایگان

دوره های پیشنهادی

دوره آموزش گیت(git)
دوره آموزش گیت(git)
تکمیل ضبط
امیرحسین بیگدلو
دوره آموزش asyncio در پایتون
دوره آموزش asyncio در پایتون
تکمیل ضبط
امیرحسین بیگدلو
دوره اول آموزش جنگو (django)
دوره اول آموزش جنگو (django)
تکمیل ضبط
امیرحسین بیگدلو



ارسال نظر


علي رضا

8 ماه قبل پاسخ به نظر

سلام
سايت شما از جنگو ساخته شده؟

ارسال نظر



امیرحسین بیگدلو

8 ماه قبل

سلام
بله، با جنگو ساخته شده

مینا

1 سال قبل پاسخ به نظر

سلام وقت بخیر
خواستم تشکر کنم آموزش هاتون عالی هستندخیلی منسجم با بیان شیوا
و مرسی که این آموزش ها رو ضبط کردید
یک دنیا سپاسگذارم

ارسال نظر



majid

1 سال قبل پاسخ به نظر

سلام سوالم یکم سطحیه ولی میشه از داخل مدل رفت به تمپلیت ها بدون اینکه توی view پردازش کنیم اون مدل رو؟

ارسال نظر



امیرحسین بیگدلو

1 سال قبل

سلام
خیر، نمیتونید مستقیما از مدل به تمپلیت برید

ساحل

1 سال قبل پاسخ به نظر

الان که گیت بازنمیشه چطور سورس اون پروژه های واقعی رو میتونیم ببینیم؟ ممنون میشم راهنمایی کنید.

ارسال نظر



امیرحسین بیگدلو

1 سال قبل

سلام
گیتهاب مشکلی نداره و باز میشه

سالار

1 سال قبل پاسخ به نظر

کاش ویدیو ها امکان دانلود داشتن اینجوری وقتی نت مشکل پیدا میکنه واقعا سخت میشه دیدن کورسها

ارسال نظر



salar

1 سال قبل پاسخ به نظر

سلام
آقا امیر امکانش هست سورس سایت خودتون رو جایی بزارید(با حذف اطلاعات محرمانه) چون ویدیو رو پاز کردم و یه نگاهی کردم برام جالب بود، که مثلا تو مدل چه فیلد هایی دارید،‌ ویو هاتون چطوریه، چجوری از دیتابیس اطلاعات رو گرفتید، ویو ها و ...
دوست داشتم کد یه پروژه واقعی رو بخونم
اگه سورس اون رو نمیتونید جایی قرار بدید امکانش هست چند تا پروژه(نسبتا بزرگ) که کد هاش هم استاندارد باشه معرفی کنید
ممنون :)

ارسال نظر



امیرحسین بیگدلو

1 سال قبل

سلام
اینو ببین
https://github.com/nitely/Spirit

Sajjad

2 سال قبل پاسخ به نظر

سلام استاد !!!! میگم این بخش بخش کردن جنگو (در دیتابیس و بخش های سایت) خیلی هم خوب نیست ، چون اگه بخوایم یه پروژه خیلی بزرگ بسازیم ، مجبوریم صدتا پوشه و اپ درست کنیم

ارسال نظر



امیرحسین بیگدلو

2 سال قبل

سلام
فرض بگیریم که این معماری بد باشه راه حل جایگزینی وجود نداره.
مگر اینکه میکروسرویس کنید.

اصغری

2 سال قبل پاسخ به نظر

معماری جنگو رو که من در اینترنت سرچ میکنم مثل اکثر فریم ورک ها MVC هست نه MVT که شما گفتید!

ارسال نظر



امیرحسین بیگدلو

2 سال قبل

سلام
فرقی نداره. mvc و mvt هر دو به یک معماری اشاره‌ میکنن، منتها با اسم‌های مختلف

مونگارد