web开发——3.数据模型概念
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 首页查看所有用户
l 首页查看所有用户—删除用户
l 增加用户[POST参数传递]
l 修改用户[POST参数传递]
总结:
l 核心_操作!
l 重点
n 理解 Django项目中数据类型的定义
n 理解 Django对数据类型对象的管理[高度封装]
n 理解 Django对象管理器[为什么有对象,还要多个对象管理器]
n 操作[掌握]:项目小案例(用户列表的查看)
n 操作[了解]:项目小案例(用户数据的删除)
web开发——3.数据模型概念相关推荐
- 浅谈移动Web开发:深入概念
转载自http://kb.cnblogs.com/page/508655/ 如果你是一个开始接触移动Web开发的前端工程师,那么你或许也遇到了和我曾经遇到的过问题:有太多新的概念需要掌握,太多相似的概 ...
- 用 Python 撸一个 Web 服务器-第1章:Web 开发简介
前言 Web 开发技术一直在高速发展,各种新奇概念与框架层出不穷,尤其在 Web 前端领域,几年前还是 jQuery 的天下,而如今在 Vue.React 等框架面前也显得廉颇老矣. 不过,虽然各种框 ...
- 【Python】 Web开发框架的基本概念与开发的准备工作
Web框架基本概念 现在再来写这篇文章显然有些马后炮的意思.不过正是因为已经学习了Flask框架, 并且未来计划学习更加体系化的Django框架,在学习过程中碰到的很多术语等等,非常有必要通过这样一篇 ...
- Java web 开发的概念、环境配置、创建项目过程详解(Eclipse)
Java Web 开发 Java Web 开发概念 搭建过程 详解 在eclipse创建Dynamic Web Project 创建时选择Tomcat的版本 创建项目成功 eclipse环境下如何配置 ...
- web开发中常用的概念
Tomcat服务器 Web开发中的常见概念 B/S系统和C/S系统 Brower/Server:浏览器 服务器 系统 ----- 网站 Client/Server:客户端 服务器 系统 ----- Q ...
- Web开发中的主要概念
一.Web开发中的主要概念 1.静态资源:一成不变的.html.js.css 2.动态资源:JavaWeb.输出或产生静态资源.(用户用浏览器看到的页面永远都是静态资源) 3.JavaEE:十三种技术 ...
- 浅谈移动Web开发(上):深入概念
PPI 什么是PPI PPI的复杂之处在于如果他所属的上下文环境不同,意义也会完全不一样. 当我们在谈论显示设备的PPI时,它代指的屏幕的像素密度:当我们在谈论和图片相关时,我们谈论的是打印时的分辨率 ...
- app开发和web开发_了解2020年现代Web App开发的概念
app开发和web开发 Millions of businesses exchange information on the internet and to interact with their t ...
- app开发和web开发_理解现代Web App开发概念的指南
app开发和web开发 Millions of businesses exchange information on the internet and to interact with their t ...
最新文章
- 【网络安全】无需SOCKS支持,帮助广大渗透测试人员建立一条隐蔽的通信信道
- javascript与C#的编码解码问题
- mysql 演示吧_postgreSQL常用命令
- jmeter的几种参数化使用方法
- (转)windows下安装python及第三方库numpy、scipy、matplotlib终极版
- js将base64做UrlEncode转码
- kubernets kube-proxy原理分析
- python编程用户登陆c_python编写登录接口(上)
- SparkSql 数据类型转换
- AsyncTask的理解和使用
- DSP CCS软件仿真
- hdtune硬盘检测详解教程
- 数据采集及预处理——针对“数据”“采集”“预处理”的理解与解析
- 强迫症狂喜!PC端相册还能智能分类!
- 万物Linux皆可刷安卓,万物皆可Win,开发者成功在安卓手机刷入Win10系统
- java 算出下一个工作日_Java 计算一段时间段内除去周六日、节假日的工作日数———超详细(全)...
- screen工具使用
- python如何生成26个英文字母(包括大小和小写)以及附上英文可见(常用)字符的ASCII码表。
- android中contains的用法
- JVM 报 GC Overhead limit exceeded 是什么意思?
热门文章
- Nginx配置文件梗概
- Cell Biolabs艾美捷丨小鼠抗FLAG标记单克隆抗体
- vant weapp在小程序自定义tabbar
- Vue基础知识总结 14:Vuex是做什么的?
- (超全面,超基础)Kriging插值推导理论笔记,算法,普通克里金
- 个人主页软件Fenrus
- 2022/9/12(cf·div4#817)https://codeforces.com/contest/1722
- 滑动平均模型(MA)—tensorflow
- 第八篇:qt写ui转py文件之pyside2转py(全步骤)
- 第二章_机器学习基础