博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MVC框架和MTV框架
阅读量:4654 次
发布时间:2019-06-09

本文共 2116 字,大约阅读时间需要 7 分钟。

MVC,全名是Model View Controller,是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller),具有耦合性低、重用性高、生命周期成本低等优点。

MTV模式:

1.Models:一个抽象层,用来构建和操作你的web应用中的数据,模型是你的数据的唯一的、权威的信息源。它包含你所储存数据的必要字段和行为。通常,每个模型对应数据库中唯一的一张表。

from django.db import models# Create your models here.class BlogsPost(models.Model):    title = models.CharField(max_length = 150)    body = models.TextField()    timestamp = models.DateTimeField()
View Code

创建好模型就好了,剩下的由Django完成。Django会根据模型在数据库中创建一个表

2.模板(templates):模板层提供了设计友好的语法来展示信息给用户。使用模板方法可以动态地生成HTML。模板包含所需HTML 输出的静态部分,以及一些特殊的语法,描述如何将动态内容插入。

{% if latest_question_list %}    
{
% else %}

No polls are available.

{
% endif %}
View Code

3.视图(views):用于封装负责处理用户请求及返回响应的逻辑。视图可以看作是前端与数据库的中间人,他会将前端想要的数据从数据库中读出来给前端。他也会将用户要想保存的数据写到数据库。

#coding=utf-8from django.shortcuts import renderfrom blog.models import BlogsPostfrom django.shortcuts import render_to_response# Create your views here.def index(request):    blog_list = BlogsPost.objects.all()    return render_to_response('index.html',{
'blog_list':blog_list})
View Code

查询到BlogsPost数据库里的所有数据,赋值给blog_list变量。

return render_to_response('index.html',{'blog_list':blog_list})

通过render_to_response() 返回给浏览器一个index.html页面,并且将blog_list变量的值也返回给index.html。

4.MTV与MVC

MVC:Model 代表数据存取层,View 代表的是系统中选择显示什么和怎么显示的部分,Controller 指的是系统中根据用户输入并视需要访问模型,以决定使用哪个视图的那部分。

以下是 Django 中 M、V 和 C 各自的含义:

M ,数据存取部分,由django数据库层处理,本章要讲述的内容。   V ,选择显示哪些数据要显示以及怎样显示的部分,由视图和模板处理。  C ,根据用户输入委派视图的部分,由 Django 框架根据 URLconf 设置,对给定 URL 调用适当的 Python 函数。

C 是由框架自行处理,而 Django 里更关注的是模型(Model)、模板(Template)和视图(Views), Django 也被称为 MTV 框架 。在 MTV 开发模式中:

M 代表模型(Model),即数据存取层。 该层处理与数据相关的所有事务: 如何存取、如何验证有效 T 代表模板(Template),即表现层。 该层处理与表现相关的决定: 如何在页面或其他类型文档中进行显示。 V 代表视图(View),即业务逻辑层。 该层包含存取模型及调取恰当模板的相关逻辑。 你可以把它看作模型与模板之间的桥梁。

如果你熟悉其它的 MVC Web开发框架,比方说 Ruby on Rails,你可能会认为 Django 视图是控制器,而Django 模板是视图。 很不幸,这是对 MVC 不同诠释所引起的错误认识。 在 Django 对 MVC 的诠释中,视图是用来描述要展现给用户的数据;而不是数据如何展现 。

转载于:https://www.cnblogs.com/LYliangying/p/9627660.html

你可能感兴趣的文章
BZOJ3790神奇项链——manacher+贪心
查看>>
sublime text 3 搭建python ide
查看>>
python爬虫工具
查看>>
java应用CPU占用100%内存泄漏分析总结(转载)
查看>>
我收藏的技术知识图(每张都是大图)
查看>>
2016 - 1 - 3 国旗选择demo
查看>>
百度地图demo
查看>>
面向对象
查看>>
浅析HashSet 与 HashMap
查看>>
构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(12)-系统日志和异常的处理②...
查看>>
空间复杂度
查看>>
jQuery学习-访问设置元素内容
查看>>
scala下划线的作用
查看>>
20169205 2016-2017-2 实验三 缓冲区溢出漏洞实验
查看>>
spring开发的总结
查看>>
ExtJS学习之路第五步:认识最常见组件Panel
查看>>
javascript的设计模式(三)———— 原型模式
查看>>
NGUI用UIGrid加载Item会有部分空出来的解决办法
查看>>
hdu 5365 Run
查看>>
绝对兼容的,简单易用的,滚动翻看图片功能!
查看>>