web开发——3.数据模型概念

本文介绍了Django数据模型的概念,包括数据模型Model的定义、ORM操作和Django连接数据库的详细步骤。通过实例展示了如何定义模型类、同步数据库以及进行数据操作。还探讨了Django对象管理器在数据增删改查中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


1-1 主要内容

 数据库相关回顾

数据类型的概念

数据类型的定义

数据类型的查询【单表查询】

1-2 课程内容

1. 复习回顾

1.1. 概念整理回顾

a. Django有什么样的开发优势?


Django以其高效的开发效率著称,作为实现了MVT处理模式的web框架,内建封装好的数据模型的ORM高效操作、强大的模板支持、高性能的缓存处理、完善的管理后台以及封装的高级表单处理,成为了作为web开发使用的首选框架。

[开发效率、内建功能、为什么为选择]

b. 什么是MVC处理模式?什么是MVT处理模式?


MVC是一种编程思想,是一种文体的处理模式,注重文体的处理过程;主要由三部分组成,负责数据封装的数据模型Model,负责请求分发操作的控制器Controller,以及负责数据展示的视图View;通过View发送的请求,到达Controller之后进行请求分发调用后台处理函数处理数据模型Model,并在处理函数返回数据给Controller控制器之后将数据转发到视图View进行展示的过程!

MVT也是一种编程思想,是从MVC的基础上衍生出来的,目前是Django中特有的一种处理模式,在Django中将控制器Controller单纯的分发功能封装成了路由进行操作,在MVT的三个组成部分中将网页视图和模板语法单独封装成了网页模板Template,将接受请求的处理函数封装成了视图处理函数views,将要处理的数据封装成了数据模型Model;在处理过程中,路由接受到请求,调用对应的视图处理函数views进行后台数据处理,处理完成后,将得到的数据在网页模板Template中进行渲染展示。

c. Django的文件结构和项目结构分别指代的是什么?表现出来什么方式?


文件结构指代的是项目的文件组成方式,项目结构指代的是项目的整体构架方式

文件结构表现出来就是在Django项目中,有根项目文件夹、子模块应用文件夹,其中的文件组成分别有不同的方式,根项目文件夹中主要有项目本身信息相关的文件,子模块应用中主要是项目功能相关的文件

项目结构主要是实现了MVT处理模式的一种组成结构,通过根项目来管理所有的子模块应用的方式来架构整个项目结构

d. 什么是虚拟环境?虚拟环境有什么操作的意义?


虚拟环境就是一个单独的封闭的环境,这个封闭的开发环境是完全独立的不受其他环境影响的,通过创建一个虚拟环境,可以在当前虚拟环境中进行独立的项目操作

虚拟环境存在的意义主要是因为在实际项目开发过程中,经常会遇到不同的开发环境在同一台电脑上共存的情况,通过创建多个封闭的虚拟环境,来达到不同的项目同时在不同的环境中进行开发操作的实现!

e. 开发过程中遇到了什么难以解决的问题?说说你的解决思路?


1.2. 数据库复习回顾

学习过的数据库:mysql\mongdb\redis

会操作的数据库:mysql\redis

mysql为例:主要的操作的方式

3个创建

 创建(删除)数据库

 创建(删除)数据表[table-relation(关系)]

n 创建(删除)数据

l 4条语句

insert

 删delete

 改update

select

 单表

单条件

多条件(并且/或者)

 内连接[自连接]

 多表

关联查询

l 外连接

n 左外连接/右外连接

l 5种约束

n 主键|外键|唯一|默认|检查

l 数据对象

n 数据库|数据表|约束|索引|视图|序列|过程|程序包|触发器|数据字典|事务..

2. 数据模型的定义

l web概述——基础铺垫

l Django快速入门——学会使用Django来进行项目处理 | MVT | 控制器[路由]

l Django数据模型Model[单个类型操作]

l Django数据模型Model[多个类型关联操作]

l Django视图模板[View | Template]

n 网页视图的处理[View | Template]

n 网页静态文件操作[View一部分]

n 模板语法操作[Template一部分]

2.1. 数据模型Model

l 软件的三层结构

看完上图:理解~软件的核心——处理数据

软件界面[视图]数据(用户输入)à 后端 将界面上的数据 创建对象 封装

后端【对象】数据 à 数据库 数据

l 程序中的对象和数据库中的数据的对应关系

程序

数据库

项目mysite

某个具体的数据库 mysite

类型 class author

数据表 table[author]

类型  属性[attribute]

数据字段  列[column]

对象 某个具体的对象 object

一行数据  记录[recorder]

l ORM操作

ORM是一种编程思想,一种处理模式,一种将程序中的对象和数据库中的数据进行映射关联的编程处理方式

ORM:Object[对象] Relation[关系/] Mapping[映射]

ORM操作的核心:可以在程序中,进行对象的增删改查,同时在增删改查的过程中,直接操作数据库中的数据!

2.2. Django连接数据库

1) 常见的数据库操作

l 常见的数据库

n 关系型数据库:sqlite/mysql/sql server/oracle/db2

n 非关系型数据[NoSQL:not only sql]:mongdb\redis\memcache…

l 使用最多还是关系型数据库

n 数据库的搭建

u 开发环境:主要是方便开发使用安装的数据库

l 可以是小型数据库、可以不稳定、可以丢失数据…

l 目的:测试程序功能

u 生产环境:主要是为了给程序提供完整的数据存储安装的数据库

l 针对性的数据库

l 通常情况下,数据库会单独部署一个服务器[数据库服务器]

开发环境的数据库搭建(mysql):

l 快速、方便、可用

l 官方网站下载数据库安装包——完整安装数据库[常用]

l 安装第三方的集成工具,项目需要的各种功能都具备了wamp/xampp

n wamp:w web | a apache | m mysql | p php

n xampp: a apache | m mysql | p php | p perl

2) Django连接数据库

连接数据库是一种项目操作,这样的操作方式,一般通过配置的方式直接实现即可!

通过修改settings.py配置文件来连接指定的数据库

Django默认支持mysqldb模块的数据库连接

mysqldb不支持新版本的python~

pymysql完成的数据库连接

1. 要使用pymysql完成数据库连接,要通过指定使用mysqldb的方式进行操作

2. 通过配置DATABASES来完成和数据库之间的连接

import pymysql

pymysql.install_as_MySQLdb()

..

DATABASES = {

‘default’: {

    ‘ENGINE’: ‘django.db.backends.mysql’,

    ‘NAME’: ‘py1709’,

    ‘USER’: ‘root’,

    ‘PASSWORD’: ‘’

}

}

3) 定义模型类

定义一个作者类型

class Author():

    ...

为了保障让我们定义的类型,交给Django进行自动管理,需要继承django.db.models.Model类型

为了让Django能管理我们定义的类型创建的对象,所有的属性,通过Django内置的方法进行创建

from django.db import models

class Author(models.Model):

id = models.AutoField(primary_key=True)

4) 同步数据库

l 根据定义的类型,自动生成sql语句

python manage.py makemigrations

l 查看生成的sql语句

python manage.py sqlmigrate <name> <no>

l 执行sql语句

python manage.py migrate

阶段小总结:Django数据模型操作

1) 创建Django项目,以及项目中的子模块应用

[将子模块应用添加到settings.py中的INSTALLED_APPS配置中]

2) 配置Django连接数据库

通过配置settgins.py配置文件,两步操作

(1) 引入pymysql,并且pymysql.install_as_MySQLdb()

(2) 配置DATABASES选项,指定要连接的数据库[参考官方文档]

3) 定义模型类

模型类不能定义在根项目中[根项目主要职责是管理整个项目]

模型类要定义在对应的子模块应用中

模型类必须继承django.db.models.Model类型

模型类的属性,必须使用Django提供的方法来定义,如models.CharField()

目的:让Django负责管理我们定义的类型

4) 数据库同步

定义完模型类之后,执行生成指定数据库的sql执行语句

python manage.py makemigrations

[可选]查看生成的sql语句

python manage.py sqlmigrate [子模块名称] [sql编号]

执行sql语句,同步数据库

python manage.py migrate


Djnago数据模型操作

1. 环境准备

python3.5+ | Django1.11.+ | pymysql

2. 创建项目以及子模块应用

根项目中不要创建数据模型

将子模块应用注册到根项目中[主路由子路由关系包含 | INSTALLED_APPS配置]

3. Django连接数据库

[引入pymysql]

[DATABASES配置]

4. 定义数据模型

5. 根据DATABASES指定的数据库,生成对应的SQL语句

6. 根据生成的SQL语句,执行SQL


l 了解Django中对于数据对象的操作方式[了解]

n 增、删、改、查

n 命令行介绍

l Django中对象本身的数据操作[了解]

n 增、删、改、查

n 代码操作

l Django中的对象管理器[掌握]

n 增、删、改、查

n 代码操作

n 对象管理器:针对管理的对象进行增删改查操作


1. Django中对象的操作——第一种方式,通过对象的objects属性操作

l Django的命令行

项目在操作过程中,Django主要是进行web开发,项目在通过服务器启动之后才能通过浏览器进行测试;Django提供了一个强大的命令行操作,可以直接在命令行中进行代码的调试

启动Django命令行:python manage.py shell

l Django对于对象本身,提供了一个objects属性,通过这个属性,可以对对象进行数据的增删改查操作

User类型à User.objectsà 增删改查User对象

l Django项目在通过runserver的方式启动之后,是热加载的

n 热加载:在修改代码之后,修改的数据会自动同步到服务器中不需要重启服务器!

n 缺陷:[1加载时间不确定2部分内容不一定加载成功]

n 技术提高~的最快方式——实践、即使是犯错,也是一种最佳的实践,只有出错才能知道什么是正确的方式!

l 项目中很少使用这样的方式[极端情况下,会有人尝试这样使用~我们知道并认识这样的操作即可,但是不推荐这样的编程!]

l 通过python manage.py shell进入命令行,可以通过命令行进行测试[重要]

l 通过类型的objects属性,对该类型的对象进行增删改查操作【不推荐:了解】

n all()/filter()/save()/update()/delete()..

l 通过类型的objects属性的操作,在程序代码中的使用

n 直接引入models模块中的对象,通过对象的objects属性直接操作[不推荐:了解]

2. 通过对象内部添加类方法——完成对象的增删改查操作[不推荐:了解]

3. 通过对象管理器——管理对象数据的增删改查

管理器对象,对管理的对象的操作:增删改查

总结:

通过一个较为完整的项目,回顾复习练习熟悉三天的Django内容

l 用户信息管理系统

n 查看所有用户

n 删除用户

n 修改用户

n 增加用户

项目结构

|-- user_management/

|-- user_managerment/

|-- userinfo/

|-- manage.py

项目模型类:

|-- UserInfo

|-- id编号

|-- name 姓名

|-- age 年龄

|-- birthday 生日

同步数据库

功能开发

首页查看所有用户

首页查看所有用户删除用户

l 增加用户[POST参数传递]

l 修改用户[POST参数传递]

总结:

l 核心_操作!

l 重点

n 理解 Django项目中数据类型的定义

n 理解 Django对数据类型对象的管理[高度封装]

n 理解 Django对象管理器[为什么有对象,还要多个对象管理器]

n 操作[掌握]:项目小案例(用户列表的查看)

n 操作[了解]:项目小案例(用户数据的删除)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值