一、Django ORM简介
-
ORM可以帮我做两件事:
-
创建、修改、删除数据库中的表(不用你写SQL语句)。【无法创建数据库】
-
操作表中的数据(不用写SQL语句)
"""
ORM:对象关系映射
作用:目的就是为了能够让不懂SQL语句的人通过python面向对象的知识点也能够轻松自如的操作数据库
缺陷:封装程度太高,有时候sql语句的效率偏低,需要自己写SQL语句
"""
类 ---------------->>> 表
对象 --------------->>> 表里面的数据
对象点属性 ---------->>> 字段对应的值
1、自己创建数据库
create database gx_db7 default charset utf8 collate utf8_general_ci;
2、Django连接数据库
"""django默认使用自带的sqlite3"""
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'db666', # 数据库名称 一定要事先创建好才能指定
'HOST':'127.0.0.1', # 数据库IP,暂用本地回环地址
'PORT':3306, # 数据库端口
'USER':'root', # 数据库用户名
'PASSWORD':'123', # 数据库密码
'CHARSET':'utf8' # 指定字符编码
}
}
3、Django操作表
创建表:在models.py文件中
解释如下:
create table app01_userinfo(
id bigint auto_increment primar key ,
name varchar (32),
password varchar (64),
age int ,
)
执行命令:
# 在pycharm里面 按住 ctrl+alt+r 今日命令界面:
# 执行下方两个命令
makemigrations
migrate
在表中新增列时,由于已存在列中可能已有数据,所有新增列必须要指定新增列对应的数据
age = models.IntegerField(defaut=2)
data = models.IntegerField(null=True,blank=True)
以后在开发中 ,如果想要对表结构进行调整:
makemigrations
migrate
4、操作表中的数据
def orm(request):
# 测试ORM操作表中的数据 2022-22-22 datetime.datetime.now()
# ##### 1.新建 #####
# Role.objects.create(title="销售部")
# Role.objects.create(title="IT部")
# Role.objects.create(title="运营部")
# UserInfo.objects.create(name="耿建",password="123",age=22)
# UserInfo.objects.create(name="敏敏",password="666",age=19)
# UserInfo.objects.create(name="慧慧",password="666")
# ##### 2.删除 #####
# UserInfo.objects.filter(id=3).delete()
# Role.objects.all().delete()
# ##### 3.获取数据 #####
# 获取符合条件的所有数据
# data_list = [对象,对象,对象] QuerySet类型
# data_list = UserInfo.objects.all()
# for obj in data_list:
# print(obj.id, obj.name, obj.password, obj.age)
# data_list = [对象]
# data_list = UserInfo.objects.filter(id=1)
# print(data_list)
# 3.1 获取第一条数据 [对象]
# row_obj = UserInfo.objects.filter(id=1).first()
# print(row_obj.id,row_obj.name,row_obj.password,row_obj.age)
# ##### 4.更新数据 #####
# UserInfo.objects.filter(id=2).update(password=222)
return HttpResponse("成功")
二、Django请求生命周期流程图
1、Django请求的生命周期的含义
-
Django请求的生命周期是指:当用户在浏览器上输入url到用户看到网页的这个时间段内,Django后台所发生的事情。
2、Django请求的生命周期图解及流程
首先,用户在浏览器中输入url,发送一个GET方法的request请求。
Django中封装了socket的WSGi服务器,监听端口接受这个request 请求,
再进行解析封装,然后传送到中间件中,这个request请求再依次经过中间件,
对请求进行校验或处理,再传输到路由系统中进行路由分发,匹配相对应的视图函数(FBV),
再将request请求传输到views中的这个视图函数中,进行业务逻辑的处理,
调用modles模型层中表对象,通过orm拿到数据库(DB)的数据。
同时拿到templates中相应的模板进行渲染,然后将这个封装了模板response响应传输到中间键中,
依次进行处理,最后通过WSGi再进行封装处理,响应给浏览器展示给用户。