MVC
传统的MVC模式指的是model,view,controller
- model是用来和数据库交互,存取数据的
- view是数据的呈现方式
- controller就是接受request,然后从model取得数据,再传递给view最终实现数据的呈现。
MVT
Django中的MVT模式指的是model,view,template
- model中,Django有内建的orm,可以用python语言来编写数据库table的schema,并且存取删除更新数据库中的数据。
- view 在Django 指的是哪些数据要呈现,而不是怎样呈现,这是和传统MVC很不同的一点。
- template 在Django就类似传统的MVC中的view,定义如何呈现数据
- Django没有明确的controller,因为Django本身就是一个controller,它得到用户的request请求,使用url match来向合适的view发送请求,view再和model交互得到数据,处理完数据后,发送给template完成数据的呈现。
Django is a "MTV" framework – that is, “model”, “template”, and “view.”
The "view"
describes the data that gets presented to the user. It’s not necessarily how the data looks, but which data is presented. The view describes which data you see, not how you see it. It’s a subtle distinction.
So, in our case, a view
is the Python callback function for a particular URL, because that callback function describes which data is presented.
Furthermore, it’s sensible to separate content from presentation – which is where templates come in. In Django, a view
describes which data is presented, but a view normally delegates to a template
, which describes how the data is presented.
Where does the controller
fit in, then? In Django’s case, it’s probably the framework itself: the machinery that sends a request to the appropriate view, according to the Django URL configuration.
Reference:
https://docs.djangoproject.com/en/1.11/faq/general/