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

关于 Django 的 MVC 模式

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

    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     Solana     839 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 22:27 PVG 06:27 LAX 14:27 JFK 17:27
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86