Django
一、MTV和MVC的区别
首先介绍Django的设计模式,也就是MTV,在这之前我们先了解MVC模式。
1、MVC设计模式
MVC是Model-View-Controller的缩写
- Model代表数据存储层,是对数据表的定义和对数据的增删改查;
- View代表视图层,是系统前段显示部分,它负责显示什么和如何进行显示;
- Controller代表控制层,负责根据从View层输入的指令来检索Model层的数据,并在该层编写代码产生结果并输出。
MVC设计模式的请求与响应过程描述如下:
- 用户通过浏览器向服务器发起request请求,Controller层接受请求后,同时向Model层和View层发送指令;
- Model层根据指令与数据库交互并选择相应业务数据,然后将数据发送给Controller层;
- View层接收到Controller的指令后,加载用户请求的页面,并将此页面发送给Controller层
- Controller层接收到Model层和View层的数据后,将它们组织成响应格式发送给浏览器,浏览器通过解析后把页面展示出来
MVC的3层之间紧密相连,但又相互独立,每一层的修改都不会影响其他层,每一层都提供了各自独立的接口供其他层调用,MVC的设计模式降低了代码之间的关联性,增加了模块的可重用性,这就是MVC的设计模式。
2、MTV设计模式
- Model:数据存储层,处理所有数据相关的业务,和数据库进行交互,并提供数据的增删改查;
- Template:模版层具体来处理页面的显示;
- View:业务逻辑层,处理具体的业务逻辑,它的作用是连通Model层和Template。
MTV设计模式的请求与响应过程的描述:
- 用户通过浏览器对服务器发起request请求,服务器接收请求后,通过View的业务逻辑层进行分析,同时向Model层和Template层发送指令;
- Model层与数据库进行交互,将数据返回给View层;
- Template层接收到指令后,调用相应的模版,并返回给View层;
- View层接收到模版与数据后,首先对模版进行渲染(即将相应的数据赋值给模版),然后组织成响应格式返回给浏览器,浏览器进行解析后最终呈现给用户。
二、Django模块讲解
1、ORM
ORM即对象关系映射,它是一种基于关系型数据库的程序技术。ORM允许使用类和对象对数据库进行操作。
Web开发中对数据库的操作是必不可少的,然而每种数据库的操作方式以及用法不尽相同。由于Django中ORM的存在,为我们操作不同种类的数据库提供了统一的方法,ORM适配了多种常用的关系型数据库。
ORM把类映射成数据库中的表,把类的一个实例对象映射成数据库中的数据行,把类的属性映射成表中的字段,通过对象的操作对应到数据库表的操作,实现了对象到SQL、SQL到对象转换过程。
Django把表模型定义为Model,他需要继承自django.db.models中的Model类,只要与数据表相关的操作,都需要继承这个类,同时ORM对于数据库的增删改查,也提供了一些简单的API,例如F查询等
2、Django中定义数据表
在创建好APP后
1、模型类
模型类本质上属于一个python类,只不过在Django中称之为模型类,它是由 django.db.models.Model 派生出来的子类,在Django中模型类是数据交互的接口,一个模型类代表数据库中的一张数据表,模型类中每一个类属性都代表数据表中的一个字段。
2、定义数据表
from django.db import models
class User(models.Model):
username = models.CharField(max_length=20)
password = models.IntegerField()
email = models.EmailField()
通过上述代码,一张用户数据表就创建完成了。
1、使用django包导入models模块;
2、使用class关键字对User表进行类定义,并继承models模块中的Models类;
3、上述数据表定义了用户姓名、密码和邮箱三种属性
3、ORM管理器对象
首先,大家需要知道每个继承 models.Model 的模型类,都会有一个objects对象被同时继承下来。这个对象就叫作“管理器对象”,数据库的增删改查可以用objects管理器对象来实现。
①:create插入数据
User.objects.create(username="Tom",password="root",email="[email protected]")
②:创建实例对象,然后调用save()方法保存
Obj=User(username="Tom",password="root",email="[email protected]")
Obj.name='Harry'
Obj.save()
对数据进行增删改查操作:
User.objects,all()#查询表中的所有记录
User.objects.filter(username_contains="T")#查询表中name含有“T”的所有记录
User.objects.get(username="Tom")#有且只有一个查询结果
User.objects.get(username="Tom").delete()#删除名字为Tom的记录
User.objects.get(username="Tom").update(username="Harry")#更新数据表的用户名为Harry
标签:models,数据库,Django,User,Model,View
From: https://www.cnblogs.com/wjx-2005-07-01/p/18010223