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 增加用戶[POST參數傳遞]

l 修改用戶[POST參數傳遞]

總結:

l 核心_操作!

l 重點

n 理解 Django項目中數據類型的定義

n 理解 Django對數據類型對象的管理[高度封裝]

n 理解 Django對象管理器[爲什麼有對象,還要多個對象管理器]

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

n 操作[瞭解]:項目小案例(用戶數據的刪除)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章