Python-web開(kāi)發(fā)必備的9個(gè)知識(shí)點(diǎn)
來(lái)源:
奇酷教育 發(fā)表于:
2022-03-09 10:50:53
Python-web開(kāi)發(fā)必備的9個(gè)知識(shí)點(diǎn)
一、什么是web軟件?
軟件開(kāi)發(fā),web軟件,是一種基于萬(wàn)維網(wǎng)為其數(shù)據(jù)交互基礎(chǔ)的計(jì)算機(jī)軟件。
主要目的是高效率的跨平臺(tái)跨地區(qū)數(shù)據(jù)共享
二.C/S和B/S架構(gòu)
C/S指Client/Server,即客戶(hù)端/服務(wù)器。
客戶(hù)端和服務(wù)器是兩個(gè)應(yīng)用程序,通常部署在兩臺(tái)不同的計(jì)算機(jī)上。
客戶(hù)端和服務(wù)器通過(guò)網(wǎng)絡(luò)進(jìn)行通信,充分利用本機(jī)資源處理相關(guān)數(shù)據(jù),只在網(wǎng)絡(luò)中傳輸必要的數(shù)據(jù)。
客戶(hù)端負(fù)責(zé)將客戶(hù)請(qǐng)求提交給服務(wù)器,再將接收到的響應(yīng)結(jié)果顯示給用戶(hù)。
服務(wù)器接收來(lái)自客戶(hù)端的請(qǐng)求,進(jìn)行相應(yīng)的計(jì)算處理,然后將結(jié)果返回給客戶(hù)端。
B/S指Browser/Server,即瀏覽器/服務(wù)器。
B/S架構(gòu)將Web瀏覽器作為客戶(hù)端應(yīng)用軟件,是一種特殊的C/S架構(gòu)。
三、web軟件開(kāi)發(fā)
B/S結(jié)構(gòu)的網(wǎng)絡(luò)軟件的開(kāi)發(fā),一般稱(chēng)為web軟件的開(kāi)發(fā)
在B/S結(jié)構(gòu)網(wǎng)絡(luò)軟件開(kāi)發(fā)包括 前端開(kāi)發(fā)與后端開(kāi)發(fā)
前端開(kāi)發(fā)人員負(fù)責(zé)數(shù)據(jù)的表現(xiàn),以及交互方式
后端開(kāi)發(fā)人員需要根據(jù)前端操作以及業(yè)務(wù)邏輯處理系統(tǒng)數(shù)據(jù)
四、HTTP與HTTPS
HTTP,HyperText Transfer Protocol,是互聯(lián)網(wǎng)上應(yīng)用最為廣泛的一種網(wǎng)絡(luò)協(xié)議。
設(shè)計(jì)HTTP最初的目的是為了提供一種發(fā)布和接收HTML頁(yè)面的方法。
是一個(gè)基于TCP/IP通信協(xié)議封裝的應(yīng)用層的協(xié)議
什么是HTTPS
Https并非是應(yīng)用層的一種新協(xié)議。只是http通信接口部分用SSL(安全套接字層)和TLS(安全傳輸層協(xié)議)代替而已。即添加了加密及認(rèn)證機(jī)制的HTTP稱(chēng)為HTTPS(HTTP Secure).
http相當(dāng)于裸奔 沒(méi)有安全性
HTTP和HTTPS協(xié)議的區(qū)別:
1,HTTPS更安全:HTTPS協(xié)議是由SSL+HTTP協(xié)議構(gòu)建的可進(jìn)行加密傳輸、身份認(rèn)證的網(wǎng)絡(luò)協(xié)議,要比HTTP協(xié)議的信息明文傳輸安全;
2,HTTPS需要申請(qǐng)證書(shū):HTTPS協(xié)議需要到CA申請(qǐng)證書(shū),一般免費(fèi)證書(shū)很少,需要交費(fèi),費(fèi)用大概與.com域名差不多,每年需要大約幾十元的費(fèi)用。而常見(jiàn)的HTTP協(xié)議則沒(méi)有這一項(xiàng);
3,端口不同:HTTP使用的是大家最常見(jiàn)的80端口,而HTTPS連接使用的是443端口
為什么需要HTTPS
HTTP是明文傳輸?shù)?,也就意味著,介于發(fā)送端、接收端中間的任意節(jié)點(diǎn)都可以知道你們傳輸?shù)膬?nèi)容是什么。這些節(jié)點(diǎn)可能是路由器、代理等。
舉個(gè)最常見(jiàn)的例子,用戶(hù)登陸。用戶(hù)輸入賬號(hào),密碼,采用HTTP的話(huà),只要在代理服務(wù)器上做點(diǎn)手腳就可以拿到你的密碼了。
用戶(hù)登陸 --> 代理服務(wù)器(做手腳)--> 實(shí)際授權(quán)服務(wù)器
在發(fā)送端對(duì)密碼進(jìn)行加密?沒(méi)用的,雖然別人不知道你原始密碼是多少,但能夠拿到加密后的賬號(hào)密碼,照樣能登陸。
五、請(qǐng)求與響應(yīng)
瀏覽器作為HTTP客戶(hù)端通過(guò)URL向HTTP服務(wù)端即WEB服務(wù)器發(fā)送所有請(qǐng)求。
Web服務(wù)器根據(jù)接收到的請(qǐng)求后,向客戶(hù)端發(fā)送響應(yīng)信息。
HTTP協(xié)議定義Web客戶(hù)端如何從Web服務(wù)器請(qǐng)求Web頁(yè)面,以及服務(wù)器如何把Web頁(yè)面?zhèn)魉徒o客戶(hù)端。
HTTP協(xié)議采用了請(qǐng)求/響應(yīng)模型。
客戶(hù)端向服務(wù)器發(fā)送一個(gè)請(qǐng)求報(bào)文,請(qǐng)求報(bào)文包含請(qǐng)求的方法、URL、協(xié)議版本、請(qǐng)求頭部和請(qǐng)求數(shù)據(jù)。
服務(wù)器以一個(gè)狀態(tài)行作為響應(yīng),響應(yīng)的內(nèi)容包括協(xié)議的版本、成功或者錯(cuò)誤代碼、服務(wù)器信息、響應(yīng)頭部和響應(yīng)數(shù)據(jù)。
HTTP 請(qǐng)求/響應(yīng)的步驟:
1、客戶(hù)端連接到Web服務(wù)器
2、發(fā)送HTTP請(qǐng)求
3、服務(wù)器接受請(qǐng)求并返回HTTP響應(yīng)
4、釋放連接TCP連接
5、客戶(hù)端瀏覽器解析HTML內(nèi)容
六、Web框架
l Web框架:是一組Web開(kāi)發(fā)工具包,它封裝了底層的數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)、協(xié)議、線(xiàn)程等細(xì)節(jié),使Web開(kāi)發(fā)人員專(zhuān)注于業(yè)務(wù)邏輯設(shè)計(jì)
Python Web框架
l 1.Django
l Django是Python世界中最出名、最成熟的Web框架。Django功能全面,各模塊之間結(jié)合緊密。
l Django提供了豐富、完善的文檔,幫助開(kāi)發(fā)者快速掌握Python Web開(kāi)發(fā)技巧,并及時(shí)解決學(xué)習(xí)中遇到的各種問(wèn)題。
l 2.Flask
l Flask是一個(gè)用Python實(shí)現(xiàn)的輕量級(jí)Web框架,被稱(chēng)為"微框架"。Flask的核心簡(jiǎn)單,通過(guò)擴(kuò)展組件增加其他功能。
l 3.Web2py
l Web2py是一個(gè)大而全,為Python提供一站式Web開(kāi)發(fā)支持的框架。它旨在快速實(shí)現(xiàn)Web應(yīng)用,提供快速、安全以及可移植的數(shù)據(jù)庫(kù)支持,Web2py兼容Google App Engine。
l 4.Bottle
l Bottle是一個(gè)簡(jiǎn)單高效的遵循WSGI的微型Python Web框架,它只有一個(gè)文件,除Python標(biāo)準(zhǔn)庫(kù)外,它不依賴(lài)于任何第三方模塊。
l 5.Tornado
l Tornado的全稱(chēng)是Tornado Web Server,它既可用作Web服務(wù)器,也可作為Python Web框架。Tornado最早用于FriendFeed、FaceBook等社交網(wǎng)站。
七、MVC:
大部分開(kāi)發(fā)語(yǔ)言中都有MVC框架
MVC框架的核心思想是:解耦
降低各功能模塊之間的耦合性,方便變更,更容易重構(gòu)代碼,最大程度上實(shí)現(xiàn)代碼的重用
l Model(模型):
l 用于封裝應(yīng)用的數(shù)據(jù)和數(shù)據(jù)處理方法。模型只提供功能接口,視圖只能通過(guò)接口來(lái)訪(fǎng)問(wèn)模型功能。
l View(視圖):
l 用于實(shí)現(xiàn)用戶(hù)界面,負(fù)責(zé)數(shù)據(jù)的顯示,完成與用戶(hù)的交互。在早期的Web應(yīng)用中,視圖是由HTML元素構(gòu)成的界面。
在新的Web應(yīng)用程序中,XHTML、XML/XSL、CSS、DHTML等新技術(shù)也用于構(gòu)成Web界面。
l Controller(控制器):
l 根據(jù)用戶(hù)輸入調(diào)用模型和視圖完成相應(yīng)處理??刂破飨喈?dāng)于調(diào)度中心核心,它本身不產(chǎn)生數(shù)據(jù),只是接收請(qǐng)求并決定調(diào)用哪個(gè)模型來(lái)處理請(qǐng)求,然后再確定用哪個(gè)視圖來(lái)顯示結(jié)果。
l 常見(jiàn)的MVC架構(gòu):
l C++語(yǔ)言的QT、MFC、gtk
l Java語(yǔ)言的Struts、Spring
l PHP語(yǔ)言的ZF
l 微軟的.NET MVC
l Python語(yǔ)言的Django
八、MVT
Django是一款python的web開(kāi)發(fā)框架
與MVC有所不同,屬于MVT框架
m表示model,負(fù)責(zé)與數(shù)據(jù)庫(kù)交互
v表示view,是核心,負(fù)責(zé)接收請(qǐng)求、獲取數(shù)據(jù)、返回結(jié)果
t表示template,負(fù)責(zé)呈現(xiàn)內(nèi)容到瀏覽器
九、ORM
對(duì)象-關(guān)系映射(Object/Relation Mapping,簡(jiǎn)稱(chēng)ORM)
幾乎所有的程序里面,都存在對(duì)象和關(guān)系數(shù)據(jù)庫(kù)。
通常在業(yè)務(wù)邏輯層和用戶(hù)界面層中,我們是面向?qū)ο蟮摹?/div>
當(dāng)對(duì)象信息發(fā)生變化的時(shí)候,我們需要把對(duì)象的信息保存在關(guān)系數(shù)據(jù)庫(kù)中。
面向?qū)ο笫菑能浖こ袒驹瓌t(如耦合、聚合、封裝)的基礎(chǔ)上發(fā)展起來(lái)的,
而關(guān)系數(shù)據(jù)庫(kù)則是從數(shù)學(xué)理論發(fā)展而來(lái)的,兩套理論存在顯著的區(qū)別。
為了解決這個(gè)不匹配的現(xiàn)象,ORM 技術(shù)應(yīng)運(yùn)而生。
ORM技術(shù)可以把對(duì)象模型表示的對(duì)象映射到基于SQL的關(guān)系模型數(shù)據(jù)結(jié)構(gòu)中去。
對(duì)象-關(guān)系映射(ORM)系統(tǒng)一般以中間件的形式存在,主要實(shí)現(xiàn)程序?qū)ο蟮疥P(guān)系數(shù)據(jù)庫(kù)數(shù)據(jù)的映射。