Python-web開(kāi)發(fā)必備的9個(gè)知識點(diǎn)
來(lái)源:
奇酷教育 發(fā)表於:
2022-03-09 10:50:53
Python-web開(kāi)發(fā)必備的9個(gè)知識點(diǎn)
一、什麼是web軟體?
軟體開(kāi)發(fā),web軟體,是一種基於全球資訊網(wǎng)為其數(shù)據(jù)交互基礎(chǔ)的計(jì)算機(jī)軟體。
主要目的是高效率的跨平臺(tái)跨地區(qū)數(shù)據(jù)共享
二.C/S和B/S架構(gòu )
C/S指Client/Server,即客戶(hù)端/伺服器。
客戶(hù)端和伺服器是兩(liǎng)個(gè)應(yīng)用程式,通常部署在兩(liǎng)臺(tái)不同的計(jì)算機(jī)上。
客戶(hù)端和伺服器通過(guò)網(wǎng)絡(luò)進(jìn)行通信,充分利用本機(jī)資源處理相關(guān)數(shù)據(jù),只在網(wǎng)絡(luò)中傳輸(shū)必要的數(shù)據(jù)。
客戶(hù)端負(fù)責(zé)將客戶(hù)請求提交給伺服器,再將接收到的響應(yīng)結(jié)果顯示給用戶(hù)。
伺服器接收來(lái)自客戶(hù)端的請求,進(jìn)行相應(yīng)的計(jì)算處理,然後將結(jié)果返回給客戶(hù)端。
B/S指Browser/Server,即瀏覽器/伺服器。
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,是網(wǎng)際網(wǎng)路上應(yīng)用最為廣(guǎ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(安全傳輸(shū)層協(xié)議)代替而已。即添加了加密及認(rèn)證機(jī)制的HTTP稱(chēng)為HTTPS(HTTP Secure).
http相當(dāng)於裸奔 沒有安全性
HTTP和HTTPS協(xié)議的區(qū)別:
1,HTTPS更安全:HTTPS協(xié)議是由SSL+HTTP協(xié)議構(gòu )建的可進(jìn)行加密傳輸(shū)、身份認(rèn)證的網(wǎng)絡(luò)協(xié)議,要比HTTP協(xié)議的信息明文傳輸(shū)安全;
2,HTTPS需要申請證書(shū):HTTPS協(xié)議需要到CA申請證書(shū),一般免費(fèi)證書(shū)很少,需要交費(fèi),費(fèi)用大概與.com域名差不多,每年需要大約幾十元的費(fèi)用。而常見(jiàn)的HTTP協(xié)議則沒有這一項(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ù)輸(shū)入帳號(hào),密碼,採用HTTP的話(huà),只要在代理伺服器上做點(diǎn)手腳就可以拿到你的密碼了。
用戶(hù)登陸 --> 代理伺服器(做手腳)--> 實(shí)際授權(quán)伺服器
在發(fā)送端對(duì)密碼進(jìn)行加密?沒用的,雖然別人不知道你原始密碼是多少,但能夠拿到加密後的帳號(hào)密碼,照樣能登陸。
五、請求與響應(yīng)
瀏覽器作為HTTP客戶(hù)端通過(guò)URL向HTTP服務(wù)端即WEB伺服器發(fā)送所有請求。
Web伺服器根據(jù)接收到的請求後,向客戶(hù)端發(fā)送響應(yīng)信息。
HTTP協(xié)議定義Web客戶(hù)端如何從Web伺服器請求Web頁(yè)面,以及伺服器如何把Web頁(yè)面傳送給客戶(hù)端。
HTTP協(xié)議採用了請求/響應(yīng)模型。
客戶(hù)端向伺服器發(fā)送一個(gè)請求報(bào)文,請求報(bào)文包含請求的方法、URL、協(xié)議版本、請求頭部和請求數(shù)據(jù)。
伺服器以一個(gè)狀態(tài)行作為響應(yīng),響應(yīng)的內(nèi)容包括協(xié)議的版本、成功或者錯誤代碼、伺服器信息、響應(yīng)頭部和響應(yīng)數(shù)據(jù)。
HTTP 請求/響應(yīng)的步驟:
1、客戶(hù)端連接到Web伺服器
2、發(fā)送HTTP請求
3、伺服器接受請求並返回HTTP響應(yīng)
4、釋放連接TCP連接
5、客戶(hù)端瀏覽器解析HTML內(nèi)容
六、Web框架
l Web框架:是一組Web開(kāi)發(fā)工具包,它封裝了底層的資料庫(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ò)擴展組件增加其他功能。
l 3.Web2py
l Web2py是一個(gè)大而全,為Python提供一站式Web開(kāi)發(fā)支持的框架。它旨在快速實(shí)現(xiàn)Web應(yīng)用,提供快速、安全以及可移植的資料庫(kù)支持,Web2py兼容Google App Engine。
l 4.Bottle
l Bottle是一個(gè)簡(jiǎn)單高效的遵循WSGI的微型Python Web框架,它只有一個(gè)文件,除Python標(biāo)準(zhǔn)庫(kù)外,它不依賴於任何第三方模塊。
l 5.Tornado
l Tornado的全稱(chēng)是Tornado Web Server,它既可用作Web伺服器,也可作為Python Web框架。Tornado最早用於FriendFeed、FaceBook等社交網(wǎng)站。
七、MVC:
大部分開(kāi)發(fā)語言中都有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ù)輸(shū)入調(diào)用模型和視圖完成相應(yīng)處理。控制器相當(dāng)於調(diào)度中心核心,它本身不產(chǎn)生數(shù)據(jù),只是接收請求並決定調(diào)用哪個(gè)模型來(lái)處理請求,然後再確定用哪個(gè)視圖來(lái)顯示結(jié)果。
l 常見(jiàn)的MVC架構(gòu ):
l C++語言的QT、MFC、gtk
l Java語言的Struts、Spring
l PHP語言的ZF
l 微軟的.NET MVC
l Python語言的Django
八、MVT
Django是一款python的web開(kāi)發(fā)框架
與MVC有所不同,屬於MVT框架
m表示model,負(fù)責(zé)與資料庫(kù)交互
v表示view,是核心,負(fù)責(zé)接收請求、獲取數(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)係資料庫(kù)。
通常在業(yè)務(wù)邏輯層和用戶(hù)界面層中,我們是面向對(duì)象的。
當(dāng)對(duì)象信息發(fā)生變化的時(shí)候,我們需要把對(duì)象的信息保存在關(guān)係資料庫(kù)中。
面向對(duì)象是從軟體工程基本原則(如耦合、聚合、封裝)的基礎(chǔ)上發(fā)展起來(lái)的,
而關(guān)係資料庫(kù)則是從數(shù)學(xué)理論發(fā)展而來(lái)的,兩(liǎng)套理論存在顯著的區(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)程序對(duì)象到關(guān)係資料庫(kù)數(shù)據(jù)的映射。