1.定義
可執(zhí)行的二進(jìn)制指令的集合赁酝。用于執(zhí)行一定功能的計(jì)算機(jī)程序队塘。
2.作用:
解決實(shí)際生活中的問題
3.核心:
數(shù)據(jù)處理
4.處理方式:
增刪改查(crud)
個(gè)軟件在處理流程上不一定相同
5.從使用環(huán)境分類:
>.單機(jī)
>.網(wǎng)絡(luò)
6.從架構(gòu)分類
>.C/S 客戶端——服務(wù)器
>.B/S 瀏覽器——服務(wù)器
網(wǎng)站和軟件的區(qū)別
1.網(wǎng)站:
>.可以在客戶端通過瀏覽器可以直接訪問。
>.網(wǎng)站和軟件的區(qū)別
網(wǎng)站包含軟件澄耍,軟件不能直接表示網(wǎng)站殃姓。
>.分類
靜態(tài):信息展示闷煤。
動(dòng)態(tài):訪問到網(wǎng)頁數(shù)據(jù)爽醋,并且可以數(shù)據(jù)處理蔬崩。
>.AJAX:異步刷新技術(shù)恶座,可以在不刷新網(wǎng)頁的情況下從服務(wù)器獲取數(shù)據(jù);通過DOM操作將數(shù)據(jù)展示到網(wǎng)頁中沥阳。
2.web
>.即為廣域網(wǎng)
>.網(wǎng)絡(luò)分層
局域網(wǎng)/城域網(wǎng)/廣域網(wǎng)
>.web軟件
動(dòng)態(tài)網(wǎng)站網(wǎng)絡(luò)軟件,即為B/S結(jié)構(gòu)的網(wǎng)絡(luò)軟件
3.web開發(fā)
>.對(duì)B/S結(jié)構(gòu)的軟件進(jìn)行功能開發(fā)
步驟:
==================================
>.需求分析
>.軟件結(jié)構(gòu)設(shè)計(jì)
>.開發(fā)
>.測(cè)試
>.部署和維護(hù)
軟件結(jié)構(gòu)
1.處理結(jié)構(gòu):
>.軟件界面
>.數(shù)據(jù)處理
>.數(shù)據(jù)存儲(chǔ)
2.擴(kuò)展結(jié)構(gòu)
>.界面——程序控制界面
>.數(shù)據(jù)處理——程序控制數(shù)據(jù)庫
>.數(shù)據(jù)存儲(chǔ)
3.軟件結(jié)構(gòu)設(shè)計(jì):分層模型
>.軟件代碼可以在設(shè)計(jì)過程中分成不同的層次結(jié)構(gòu)跨琳,主要區(qū)別為上下層代碼關(guān)系。
|--myproject/ 項(xiàng)目文件夾
|--main.py 程序入口
|--menu.py 界面
|--service.py 程序的業(yè)務(wù)處理類桐罕、服務(wù)類脉让,用于功能處理
|--data.py 數(shù)據(jù)處理類,用于對(duì)數(shù)據(jù)增刪改查
|--mysql 數(shù)據(jù)存儲(chǔ)功炮,數(shù)據(jù)倉庫
>.開發(fā)原則:
上層代碼可以調(diào)用下層代碼的變量溅潜、函數(shù)、方法薪伏;
下層代碼盡可以返回結(jié)果給上層代碼使用
同層之間可以互相調(diào)用
不可以跨蹭調(diào)用
web軟件
>.web服務(wù)器通過web接口來連接程序
>.web接口是實(shí)現(xiàn)了wsgi網(wǎng)關(guān)協(xié)議的接口
wsgi: web service gateway interface
>.python中的web開發(fā)滚澜,一般來說底層都實(shí)現(xiàn)了wsgi的web接口,以實(shí)現(xiàn)瀏覽器訪問服務(wù)器資源的數(shù)據(jù)嫁怀。
1.定義一個(gè)web接口:
from wsgiref.simple_server import make_server
def app(env,response):
#設(shè)置響應(yīng)頭:描述相應(yīng)數(shù)據(jù)的內(nèi)容
response("200 OK",[('Content-type','text/html')])
#返回?cái)?shù)據(jù)
return [b'<h1>hello</h1>']
#導(dǎo)入一個(gè)創(chuàng)建服務(wù)器的內(nèi)建函數(shù)
#開始創(chuàng)建服務(wù)器
if __name__ == "__main__":
h_server = make_server('',8000,app )
print("server is starting...")
#啟動(dòng)服務(wù)
h_server.serve_forever()
#注意本行是空行 一定要留
.上邊的程序段就等于設(shè)置了一個(gè)web接口设捐,通過運(yùn)行此程序潦牛,就可以通過瀏覽器訪問了,本地訪問http://localhost:8000/就可以訪問數(shù)據(jù)了
2.數(shù)據(jù)分發(fā)
from wsgiref.simple_server import make_server
def app(env,response):
#設(shè)置響應(yīng)頭
response('200 OK', [('Content-type','text/html')])
#打印一個(gè)參數(shù)
print(env['PATH_INFO'][1:])
path = env['PATH_INFO'][1:]
#判斷不同的url地址挡育,調(diào)用不同的參數(shù)處理
if path == 'liangshi':
return liang_shi(env, response)
elif path == 'sichou':
return si_chou(env,response)
#返回默認(rèn)值
return [b'<h1>coco</h1>']
#定義二級(jí)處理函數(shù)
#訪問糧食
def liang_shi(env, response):
return [b'<h1>liangshi</h1>']
#訪問絲綢
def si_chou(env, response):
return [b'<h1>sichou</h1>']
if __name__ == '__main__':
http_server = make_server('', 8000,app)
print("server is starting...")
http_server.serve_forever()
以上程序相當(dāng)于接口的分發(fā)數(shù)據(jù)方式簡(jiǎn)單實(shí)現(xiàn)
Django
1.基本概念
由python編寫的巴碗,專門用于快速、高效的開發(fā)web應(yīng)用程序的框架即寒。
框架:是模塊的集合橡淆,具備模塊的所有功能,也有簡(jiǎn)單的功能處理流程母赵,方便開發(fā)人員對(duì)于對(duì)應(yīng)流程自動(dòng)化處理逸爵。框架也會(huì)根據(jù)不同的功能流程具有特定的軟件結(jié)構(gòu)模式凹嘲,也算是一個(gè)獨(dú)立的軟件师倔。
類似于pygame,是Python中代碼塊的集合周蹭。一般包含多個(gè)變量趋艘、函數(shù)、類型凶朗。
2.特點(diǎn)
先進(jìn)的MVT處理模式
自動(dòng)化的項(xiàng)目構(gòu)建管理方式
完善的數(shù)據(jù)模型處理
強(qiáng)大的后臺(tái)管理系統(tǒng)
優(yōu)秀的ORM操作模塊
優(yōu)雅的模板操作封裝
優(yōu)異的緩存支持
完美的表單操作封裝
內(nèi)建sqlite數(shù)據(jù)庫瓷胧,并且支持其他各種類型數(shù)據(jù)庫。
3.Django中的MVT處理模式
關(guān)于web軟件的架構(gòu)模式
MVC和MVT
MVC:全名是Model View Controller棚愤,是模型(model)-視圖(view)-控制器(controller)的縮寫搓萧,一種軟件設(shè)計(jì)典范,用一種業(yè)務(wù)邏輯宛畦、數(shù)據(jù)瘸洛、界面顯示分離的方法組織代碼,將業(yè)務(wù)邏輯聚集到一個(gè)部件里面次和,在改進(jìn)和個(gè)性化定制界面及用戶交互的同時(shí)反肋,不需要重新編寫業(yè)務(wù)邏輯。MVC被獨(dú)特的發(fā)展起來用于映射傳統(tǒng)的輸入斯够、處理和輸出功能在一個(gè)邏輯的圖形化用戶界面的結(jié)構(gòu)中囚玫。
MVT:
m表示model,負(fù)責(zé)與數(shù)據(jù)庫交互
v 表示view读规,是核心抓督,負(fù)責(zé)接收請(qǐng)求、獲取數(shù)據(jù)束亏、返回結(jié)果
t 表示template铃在,負(fù)責(zé)呈現(xiàn)內(nèi)容到瀏覽器
4.安裝Django
最新版 2.0.X 學(xué)習(xí)和測(cè)試
最流行 1.8~1.11 公司常用
默認(rèn)安裝最新版
安裝指定版使用:
pip install django==1.11
5.項(xiàng)目搭建
創(chuàng)建項(xiàng)目
cmd中
dango-admin startproject 項(xiàng)目名稱(也是目錄名稱)
>>.目錄結(jié)構(gòu):
|-- myproject/ 項(xiàng)目的主目錄,存放項(xiàng)目中所有文件的文件夾
|-- myproject/ 項(xiàng)目的主項(xiàng)目/根項(xiàng)目,用來管理所有的項(xiàng)目
|-- __init__.py 包定義文件定義了存放這個(gè)文件的文件夾是一個(gè)python包
|-- settings.py 項(xiàng)目中所有的配置信息存放的模塊定铜,配置模塊
|-- urls.py 路由模塊阳液,定義url地址和訪問的處理函數(shù)之間的映射關(guān)系
|-- wsgi.py 實(shí)現(xiàn)了wsgi網(wǎng)關(guān)協(xié)議的模塊,表示Django項(xiàng)目支持wsgi網(wǎng)關(guān)協(xié)議
|-- manager.py 項(xiàng)目的命令行支持模塊揣炕,可以在命令行執(zhí)行不同的命令實(shí)現(xiàn)不同的功能
.測(cè)試項(xiàng)目
在cmd進(jìn)入項(xiàng)目目錄
python manage.py runserver
之后在瀏覽器中訪問
localhost:8000
即可查看運(yùn)行成功與否
>.創(chuàng)建跟項(xiàng)目視圖
>>.創(chuàng)建一個(gè)view.py在跟目錄
在此模塊中創(chuàng)建一個(gè)視圖處理函數(shù)帘皿,返回一個(gè)數(shù)據(jù)
>>.配置路由應(yīng)用
myproject/urls.py 模塊是路由模塊
為此模塊添加一個(gè)路由映射地址
>>.運(yùn)行程序
.開發(fā)二級(jí)頁面
根目錄執(zhí)行命令行:
dango-admin startapp sec_index(二級(jí)網(wǎng)頁/網(wǎng)站名稱)
二級(jí)頁面目錄結(jié)構(gòu):
|-- myblog/ 模塊的根目錄;二級(jí)網(wǎng)站的根目錄
|-- migrations/ 數(shù)據(jù)庫文件存放的文件夾[數(shù)據(jù)庫部分細(xì)講]
|-- __init__.py 包定義文件
|-- admin.py 后臺(tái)管理文件[后臺(tái)管理系統(tǒng)細(xì)講]
|-- apps.py 模塊名稱定義文件
|-- models.py 數(shù)據(jù)模型定義文件
|-- test.py 測(cè)試文件——一般用不上
|-- views.py 視圖模塊畸陡,定義視圖處理函數(shù)
.將二級(jí)頁面的模塊應(yīng)用添加到根項(xiàng)目中:
修改myproject/settigs.py
INSTALLED_ADD 選項(xiàng)列表中鹰溜,添加sec_index
.編寫二級(jí)目錄的視圖處理模塊
.配置路由模塊
sec_index創(chuàng)建一個(gè)路由模塊urls.py
將模塊中的路由添加到根目錄路由模塊中
根目錄的路由是主路由
二級(jí)頁面和目錄的路由是子路由