仿天猫网站开发笔记(2):理解MVC模型

来源:互联网 发布:windows.hlp官方下载 编辑:程序博客网 时间:2024/06/18 00:29

最开始接触MVC的概念,不是在web开发上,而是在游戏开发。在Unity3D中有一个插件叫做StrangeIoc。它是依据控制反转和解耦原理设计的,并且支持依赖注入。这里我简单介绍一下这几个概念。

  • 控制反转Ioc(Inversion of Control):我在之后学习java spring框架时再次巩固了这个概念。简单来说,就是将原有的直接控制对象的方式改为将对象的控制权交给一个“容器”,让它完成对象组件的装配和管理。
  • 依赖注入(Dependency Injection):,简单说就是一种实现控制反转的方式。
  • 解耦:控制反转的目的是为了解耦,所谓解耦,就是让程序模块之间的耦合变弱。不会牵一发而动全身。便于项目维护。

以上简单介绍了一下strangeIoc,书归正传,咱们继续聊Django,当创建一个Django应用时,文件中有四个文件,分别是:

  • models.py 也就是模型层(model),django用这个文件中的类来表示数据表。对数据表的操作其实就是对类的操作,这就是ORM(对象关系映射ObjectRelationalMapping)
  • views.py就是控制层(controller),在这里敲主要的业务逻辑
  • templates文件夹下的HTML文件,也就是视图层(view.py),django内置了一套模板语言。并且限制在模板中不能使用python代码。模板语言包括块标签(实现简单逻辑)、变量和过滤器。
  • urls.py 将url和视图对应起来。用户在游览一个网址时,实际上调用了相应的view.py文件中的方法。方法最终返回一个模板(template)
    正如前文所言,这种设计模式的关键优势就在于各种组件之间是松散结合的,也就是我们所谓的解耦。这和最原始的CGI开发有本质的区别。
    这里写图片描述
    上图就是我整理的Django的工作原理图。
    图中标黄的部分是django的核心——中间件。所谓中间件(middleware)就是处理HTTP的request和response的。类似插件。
    一般我们在编写 view 层函数的时候,都以 return response 或者 return HttpResponse(x) 结尾。当了解了中间件的存在后,才有一种恍然大悟的感觉。