tanteng
V2EX  ›  Django

关于 Django 的 MVC 模式

  •  1
     
  •   tanteng ·
    tanteng · May 18, 2015 · 6166 views
    This topic created in 4044 days ago, the information mentioned may be changed or developed.

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

    17 replies    2015-05-19 09:58:10 +08:00
    no13bus
        1
    no13bus  
       May 18, 2015
    MTV 不知道你是否认真看了文档。或者是否看了django book
    MrEggNoodle
        2
    MrEggNoodle  
       May 18, 2015
    我发现题主好多入门级别的问题。。。
    zmj1316
        3
    zmj1316  
       May 18, 2015
    实践做一个就知道了
    tanteng
        4
    tanteng  
    OP
       May 18, 2015
    @MrEggNoodle 对,我是初学者,问题很简单,但是可以回答得很专业,每个人都可以说自己的见解。
    wph95
        5
    wph95  
       May 18, 2015
    请学会看官方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  
       May 18, 2015
    @tanteng 其实简单的问题,在google搜索或者stackoverflow搜索得到的答案,会比你在这里提问高效率。
    aggron
        7
    aggron  
       May 18, 2015 via iPhone
    你的理解没错,django的叫法不同而已
    kkikk
        8
    kkikk  
       May 18, 2015
    @tanteng 这种看官方入门tutorial就能解决的问题就不用浪费彼此的时间了吧
    cfan8
        9
    cfan8  
       May 18, 2015
    controller一般是不用自己写的,硬要说的话urls.py算是控制器,路由表负责对请求进行dispatch,控制后续的流程走向
    fy
        10
    fy  
       May 18, 2015
    我认为MVT的叫法更加准确,MVC的说法其实非常模糊……
    saxon
        11
    saxon  
       May 18, 2015
    顶楼上 我喜欢叫MTV
    fuge
        12
    fuge  
       May 18, 2015 via iPhone
    RTFM
    gevin
        13
    gevin  
       May 18, 2015
    我记得django的文档了也提到过,他们这个叫做MVT,算是MVC的一个变种

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

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

    我个人的一些经验是,在MVT之外,会实现一个类似于Controller的层,用来封装所有底层业务操作,包括通用函数,数据库操作,业务数据计算处理等等,Model就只单纯做模型定义的事情,View就只做数据收发和对Controller的调用。
    leeuserb
        17
    leeuserb  
       May 19, 2015
    你要相信你自己,你的理解是对的
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3121 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 77ms · UTC 08:25 · PVG 16:25 · LAX 01:25 · JFK 04:25
    ♥ Do have faith in what you're doing.