V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
tanteng
V2EX  ›  Django

关于 Django 的 MVC 模式

  •  1
     
  •   tanteng ·
    tanteng · 2015-05-18 12:10:16 +08:00 · 5315 次点击
    这是一个创建于 3478 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    17 条回复    2015-05-19 09:58:10 +08:00
    no13bus
        1
    no13bus  
       2015-05-18 13:11:41 +08:00
    MTV 不知道你是否认真看了文档。或者是否看了django book
    MrEggNoodle
        2
    MrEggNoodle  
       2015-05-18 13:12:26 +08:00
    我发现题主好多入门级别的问题。。。
    zmj1316
        3
    zmj1316  
       2015-05-18 13:26:38 +08:00
    实践做一个就知道了
    tanteng
        4
    tanteng  
    OP
       2015-05-18 13:38:14 +08:00
    @MrEggNoodle 对,我是初学者,问题很简单,但是可以回答得很专业,每个人都可以说自己的见解。
    wph95
        5
    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
        6
    MrEggNoodle  
       2015-05-18 14:35:22 +08:00
    @tanteng 其实简单的问题,在google搜索或者stackoverflow搜索得到的答案,会比你在这里提问高效率。
    aggron
        7
    aggron  
       2015-05-18 15:57:42 +08:00 via iPhone
    你的理解没错,django的叫法不同而已
    kkikk
        8
    kkikk  
       2015-05-18 16:19:31 +08:00
    @tanteng 这种看官方入门tutorial就能解决的问题就不用浪费彼此的时间了吧
    cfan8
        9
    cfan8  
       2015-05-18 16:37:40 +08:00
    controller一般是不用自己写的,硬要说的话urls.py算是控制器,路由表负责对请求进行dispatch,控制后续的流程走向
    fy
        10
    fy  
       2015-05-18 16:41:22 +08:00
    我认为MVT的叫法更加准确,MVC的说法其实非常模糊……
    saxon
        11
    saxon  
       2015-05-18 18:51:10 +08:00
    顶楼上 我喜欢叫MTV
    fuge
        12
    fuge  
       2015-05-18 20:37:08 +08:00 via iPhone
    RTFM
    gevin
        13
    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
        14
    tanteng  
    OP
       2015-05-18 22:36:59 +08:00
    @MrEggNoodle 你可以回答的不一样,可以有不同的见解,还可以说几个不同的模式,扩展,可以很多发挥。简单的问题可以回答得不简单。
    vose
        15
    vose  
       2015-05-18 22:42:19 +08:00
    @no13bus MTV +1
    tidewind
        16
    tidewind  
       2015-05-19 01:07:36 +08:00
    是的,首先Django这里叫MVT。
    Model,View,Template,比较常见的模式是在Model中除了进行数据模型定义之外还会写上关于数据库操作的代码,View作为接收页面参数,调用Model的方法以及决定如何渲染页面,Template就不用讲了。

    我个人的一些经验是,在MVT之外,会实现一个类似于Controller的层,用来封装所有底层业务操作,包括通用函数,数据库操作,业务数据计算处理等等,Model就只单纯做模型定义的事情,View就只做数据收发和对Controller的调用。
    leeuserb
        17
    leeuserb  
       2015-05-19 09:58:10 +08:00
    你要相信你自己,你的理解是对的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2804 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 09:48 · PVG 17:48 · LAX 01:48 · JFK 04:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.