image

一、Django ORM简介

  • ORM可以帮我做两件事:

    • 创建、修改、删除数据库中的表(不用你写SQL语句)。【无法创建数据库】

    • 操作表中的数据(不用写SQL语句)

"""
ORM:对象关系映射
作用:目的就是为了能够让不懂SQL语句的人通过python面向对象的知识点也能够轻松自如的操作数据库
缺陷:封装程度太高,有时候sql语句的效率偏低,需要自己写SQL语句
"""
类 ---------------->>> 表
对象 --------------->>> 表里面的数据
对象点属性 ---------->>> 字段对应的值

1、自己创建数据库

  • 启动MySQL服务

  • 自带工具创建数据库

 create database gx_db7 default charset utf8 collate utf8_general_ci;

image-20220225170707981

2、Django连接数据库

  • 在settings.py配置文件修改配置

"""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'  # 指定字符编码
    }
}	

image

3、Django操作表

  • 创建表

  • 删除表

  • 修改表

创建表:在models.py文件中

image

解释如下:

create table app01_userinfo(

    id bigint auto_increment primar key ,
    name varchar (32),
    password varchar (64),
    age int ,
)

执行命令:

# 在pycharm里面 按住 ctrl+alt+r  今日命令界面:
# 执行下方两个命令 
makemigrations 

migrate 

在表中新增列时,由于已存在列中可能已有数据,所有新增列必须要指定新增列对应的数据

  • 1、手动输入一个值

  • 2、设置个默认值

age = models.IntegerField(defaut=2)
  • 3、允许为空

data = models.IntegerField(null=True,blank=True)

以后在开发中 ,如果想要对表结构进行调整:

  • 在models.py文件中操作即可

  • 在结合命令

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请求的生命周期图解及流程

Django生命周期图

首先,用户在浏览器中输入url,发送一个GET方法的request请求。

Django中封装了socket的WSGi服务器,监听端口接受这个request 请求,

再进行解析封装,然后传送到中间件中,这个request请求再依次经过中间件,

对请求进行校验或处理,再传输到路由系统中进行路由分发,匹配相对应的视图函数(FBV),

再将request请求传输到views中的这个视图函数中,进行业务逻辑的处理,

调用modles模型层中表对象,通过orm拿到数据库(DB)的数据。

同时拿到templates中相应的模板进行渲染,然后将这个封装了模板response响应传输到中间键中,

依次进行处理,最后通过WSGi再进行封装处理,响应给浏览器展示给用户。

image

posted on 2022-02-25 21:11  耿蜀黍  阅读(70)  评论(0编辑  收藏  举报