您的位置:首页 > 编程语言 > Go语言

Django中,模型(models),视图(views)和模板的区别和应用

2016-04-13 10:36 423 查看
模型

任何应用程序的基本,不管是不是Web应用,都是它所展现、收集和修改的信息。因此,若将应用程序分层,模型(model)将是最底部的一层,它是基础。视图和模板可以根据数据进出模型的方式以及表现的形式任意替换,但模型却相对稳定得多。

从设计整个Web应用的角度来说,模型可能是最容易领会却也是最难掌握的部分。在面向对象系统里对一个现实问题进行建模相对来说通常不难,但是对大流量的网站来说,最符合实际的模型却不一定总是最高效的。

模型里有很多潜在的陷阱,其中一个就是在应用程序部署后修改模型的代码。虽然表面上你“只是在修改代码”,但实际上确实在修改底层的数据库模式,这经常会对已经存储在数据库里的数据产生不良的副作用。在后面设计示例应用的章节里,我们遇到很多这类现实问题。

视图

视图(view)组成了Django应用程序里很多(有时候几乎是全部)的逻辑。它们的定义实际上却很简单:它们是链接到一个或多个定义URL上的Python函数,这些函数都返回一个HTTP响应对象。在Django的HTTP机制两端之间要执行什么操作完全都在你的控制之下。实际上,在这一步通常只有一些简单的任务需要完成,例如显示一个或是一列从模型里取得的对象,或者是往模型里添加这样的新对象,加上一些额外的工作诸如检查应用程序用户验证的状态并决定是允许还是拒绝访问。

Django为这类任务提供了很多方便快捷的帮助函数,但是你也可以选择自己编写一切来完全地控制整个过程,或是大量使用这些快捷方式来进行快速建模和开发,抑或是两者结合。灵活和强大两者兼备就是视图的特点了。

模板

我们刚刚说视图的作用是负责显示来自模型的对象。这并非百分之一百的正确。如果说视图方法只是返回一个HTTP响应的话,那么是正确的—你可以在Python里写出一个字符串然后返回它,这样的做法也不算是很落伍。只不过在绝大多数情况下,这样做的效率实在太低,所以在这里引入一个抽象层非常重要。

所以大多数Django程序员都使用它的模板语言来渲染HTML页面。基本上,模板就是一些输出动态值的经过特殊格式化的HTML文本,支持简单的逻辑结构如循环等。当一个视图要返回一个HTML文档时,它通常会指定一个模板,提供给它所要显示的信息,并在响应里使用模板渲染的结果。

虽然HTML是最常见的格式,模板实际上并不一定要它—模板可以生成任何文本格式,如CSV,甚至email消息正文。重要的是它们让一个Django项目能够把数据的表示和决定显示什么数据的视图代码区分开来。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: