前情提示
上一章節(jié),我們“重頭到尾”把前后端不分離的開(kāi)發(fā)模型MTV(也有叫MVT)擼了一遍,發(fā)現(xiàn)跟java的MVC模型(這里不講解)很像。
官方文檔不采用MVC的說(shuō)法,而采用MTV的說(shuō)法,原因也有說(shuō)明,以下是原話:
(地址:https://docs.djangoproject.com/en/3.1/faq/general/)
Django appears to be a MVC framework, but you call the Controller the “view”, and the View the “template”. How come you don’t use the standard names??
Well, the standard names are debatable.
In our interpretation of MVC, 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.
If you’re hungry for acronyms, you might say that Django is a “MTV” framework – that is, “model”, “template”, and “view.” That breakdown makes much more sense.
At the end of the day, it comes down to getting stuff done. And, regardless of how things are named, Django gets stuff done in a way that’s most logical to us.
從定義上,django開(kāi)發(fā)團(tuán)隊(duì),覺(jué)得自己更嚴(yán)謹(jǐn)。
定義一個(gè)事物,是一件很重要的事情。如果你定義了一個(gè)東西,大家都這么叫,以后說(shuō)什么都是占據(jù)主動(dòng)權(quán),因?yàn)槟闶潜亲妫∷?,定義是個(gè)偉大的事情,讓你具有降維打擊的主動(dòng)權(quán)。
此為,前話。
MTV模型
“MTV” framework – that is, “model”, “template”, and “view.”
模型(model):用于操作數(shù)據(jù)庫(kù)
模板(template):用于展示數(shù)據(jù)
視圖(view):用于控制業(yè)務(wù)邏輯
工作流程圖如下:
了解django的工作機(jī)制,可以更好的進(jìn)行開(kāi)發(fā),即以一個(gè)全局觀的思維去看待django的,你就知道要開(kāi)發(fā)和運(yùn)行django服務(wù),需要做什么了。