关于 Django 的 MVC 模式

2015-05-18 12:10:16 +08:00
 tanteng

Django的MVC好像略有不同,以ThinkPHP为例,M是model模型层,C是Action控制器,V是模版。
Django的M是model.py,但是感觉view.py是控制器,templates是模版。我的理解对吗?

5356 次点击
所在节点    Django
17 条回复
no13bus
2015-05-18 13:11:41 +08:00
MTV 不知道你是否认真看了文档。或者是否看了django book
MrEggNoodle
2015-05-18 13:12:26 +08:00
我发现题主好多入门级别的问题。。。
zmj1316
2015-05-18 13:26:38 +08:00
实践做一个就知道了
tanteng
2015-05-18 13:38:14 +08:00
@MrEggNoodle 对,我是初学者,问题很简单,但是可以回答得很专业,每个人都可以说自己的见解。
wph95
2015-05-18 13:45:13 +08:00
请学会看官方doc or django book or stackoverflow 或者百度

http://www.djangobook.com/en/2.0/chapter05.html#the-mtv-or-mvc-development-pattern

https://docs.djangoproject.com/en/1.8/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

http://stackoverflow.com/questions/6621653/django-vs-model-view-controller

http://blog.sina.com.cn/s/blog_6c8f8eba0100ozhd.html

-----
随便一个都可以解决你的问题
这个不是每个人的见解,Django有自己的一套流程,顺着用超级爽 而且高效
不顺着用的人都转flask了 自己搭建自己的流程
MrEggNoodle
2015-05-18 14:35:22 +08:00
@tanteng 其实简单的问题,在google搜索或者stackoverflow搜索得到的答案,会比你在这里提问高效率。
aggron
2015-05-18 15:57:42 +08:00
你的理解没错,django的叫法不同而已
kkikk
2015-05-18 16:19:31 +08:00
@tanteng 这种看官方入门tutorial就能解决的问题就不用浪费彼此的时间了吧
cfan8
2015-05-18 16:37:40 +08:00
controller一般是不用自己写的,硬要说的话urls.py算是控制器,路由表负责对请求进行dispatch,控制后续的流程走向
fy
2015-05-18 16:41:22 +08:00
我认为MVT的叫法更加准确,MVC的说法其实非常模糊……
saxon
2015-05-18 18:51:10 +08:00
顶楼上 我喜欢叫MTV
fuge
2015-05-18 20:37:08 +08:00
RTFM
gevin
2015-05-18 21:49:04 +08:00
我记得django的文档了也提到过,他们这个叫做MVT,算是MVC的一个变种

我认为django的MVT中,view承担了MVC中C的大部分职责及V的一部分职责,template承担了很多的V的职责,以及一部分C的职责,model是一致的

习惯了MVT,感觉MVT也很好用,开发效率也很高
tanteng
2015-05-18 22:36:59 +08:00
@MrEggNoodle 你可以回答的不一样,可以有不同的见解,还可以说几个不同的模式,扩展,可以很多发挥。简单的问题可以回答得不简单。
vose
2015-05-18 22:42:19 +08:00
@no13bus MTV +1
tidewind
2015-05-19 01:07:36 +08:00
是的,首先Django这里叫MVT。
Model,View,Template,比较常见的模式是在Model中除了进行数据模型定义之外还会写上关于数据库操作的代码,View作为接收页面参数,调用Model的方法以及决定如何渲染页面,Template就不用讲了。

我个人的一些经验是,在MVT之外,会实现一个类似于Controller的层,用来封装所有底层业务操作,包括通用函数,数据库操作,业务数据计算处理等等,Model就只单纯做模型定义的事情,View就只做数据收发和对Controller的调用。
leeuserb
2015-05-19 09:58:10 +08:00
你要相信你自己,你的理解是对的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/191869

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX