python web開發
1-1 預期目標
l 技能:學習[Django] [Tornado] [Flask]web開發框架
l 經驗:熟悉[門戶網站\在線電商\管理平臺、項目開發]開發流程和處理過程
l 總結:掌握[學習過的所有知識點的]主線!
l 檢測一個技能學會與否的關鍵
n 3W1H
u what?
u where?
u why?
u how?
1-2 開發基礎
要學習web開發,需要掌握的基本技能
l 計算機基礎知識[瞭解]
l 網頁開發[HTML/CSS]
l 網頁動態效果[Js/JQ]
l 網頁快速搭建[Bootstrap]
l 網絡相關知識[傳輸協議]
l 數據庫相關
l 數據相關知識[數據安全(加密解密)]
l 服務器後端web應用程序開發
1-3 回顧:前端開發
HTML:超文本標記語言
超文本:不僅僅能表示簡單的文字
HTML的目的:按照指定的格式在瀏覽器中展示數據
標記/標籤:選擇文本~成對標記/標籤、單標記/標籤
標籤的類型:
行標籤:標籤前後不換行、不能設置寬度和高度[display:inline]
行內塊標籤:標籤前後不換行,可以設置寬度和高度[display:inline-block]
塊標籤:標籤前後自動換行,可以設置寬度和高度[display:block]
常用的標籤:
span\p\br\hn\em\i\
form\input[text/password/checkbox/radio/url/email/..]
…
CSS:對於HTML標籤選中的內容進行樣式修飾
定位樣式
字體樣式
尺寸樣式
背景樣式
more等等
盒子模型:
傳統盒子模型[使用了一堆標籤 和他們的定位樣式以及內容樣式,操作展示網頁佈局]
盒子:規範網頁佈局的核心
分析盒子的意義——網頁開發——無障礙!
網頁佈局:通過對整體網頁的結構分析,完成盒子的嵌套進行網頁佈局的實現
網頁開發:網頁佈局->顏色填充->部分網頁佈局->顏色填充->..->內容填充
網頁快速開發:
網頁開發流程:
產品:UI設計網頁-> [產品經理]-> 前端開發網頁-> [產品經理 交付]
工具:BS快速搭建網頁-> 開發後端程序-> 部署運行
web階段:
Django 3周 [2+1]
Tornado 1周[4+1]
Flask 1周[1+4]
web概述[web基礎]
Django 入門[快速瞭解]
Django-----
1. web概述
web:網絡
網絡:多臺互相連接的計算機組成的可以通信的一個組成部分——網絡
規模比較小:局域網
規模較大:城域網
規模很大:[相對於全球——天朝]大城域網
規模相當大:全球網絡~廣域網
web軟件:網絡軟件
2. 軟件的分類
軟件:一種可執行的計算機指令的集合——程序!程序的宏觀體現:軟件
>> 理解:所謂軟件,就是在電腦上安裝的可執行的應用程序!
>> 社交軟件:QQ、微信、陌陌、釘釘、微博、Facebook..
>> 辦公軟件:Mircosoft office、金山office、…
>>> 辦公系統:OA系統
>> 網絡軟件:更多的指代動態網站
根據軟件的使用是否需要聯網:[爲什麼要用軟件!]
1) 單機軟件:軟件的使用不需要聯網,如CS1.6、紅警、office、畫圖、掃雷
a) 不會被取代,但是使用受到很大的侷限
2) 網絡軟件
a) 會越來越流行——【重點】
根據軟件使用過程中是否需要下載安裝包
1) C/S結構:Client-Server 客戶端服務器軟件
a) 在自己的客戶端電腦上,下載一個安裝包程序,安裝軟件之後,才能正常使用軟件提供的各種功能
b) QQ
c) 特點1:軟件需要的所有文件,都直接從本地安裝文件夾中獲取,速度和效果很好
d) 特點2:軟件如果有新功能更新,需要重新下載安裝包
2) B/S結構:Browser-Server瀏覽器服務器軟件
a) 在自己的客戶端電腦上,只需要有一個瀏覽器,就可以使用軟件提供的各種功能
b) 淘寶
c) 特點1:軟件需要的所有文件,都需要通過網絡進行獲取,速度和效果較較好
d) 特點2:直接在服務器端更新,客戶端不做任何處理就可以使用新功能!
3) 目標:當網速不在是問題,B/S結構的軟件會是現在和將來的趨勢
a) 重點:B/S結構的網絡軟件
關於網站: 網站:通過瀏覽器中輸入Url地址訪問的在線的服務,稱爲網站 l 靜態網站:純網頁,網頁中的內容是固定的,不會變化的!將單純的這樣的網頁部署在網絡服務器中,其他人就可以通過瀏覽器進行訪問查看,這樣的網站成爲靜態網站,主要用來進行信息展示:學校門戶網站 l 動態網站:數據在網頁中,是動態添加上的,並在網站的使用過程中,會伴隨着大量的數據動態處理過程! 網頁中的數據是動態添加和變化的[商品詳情頁],並且網站中有大量的數據處理過程、這樣的網站稱爲動態網站,也稱爲web軟件[web應用程序] PS:動畫網頁和動態網站 動畫網頁:是網頁中有動畫特效,但是所有的數據內容都是提前在網頁中固定寫好的! 動態網站:網頁中可能會沒有動畫,但是數據是動態添加的,並且會有數據運算和交互 |
網絡傳輸協議
什麼是協議?
數據交互的雙方,爲了保障數據正確的傳輸,而協商計議的一種數據交互方式
發送方[發送數據(操作方式)]à 接受方[接受數據(操作方式)]
不管什麼樣的處理操作方式,數據本身都不會發生變化
發送的數據,如果接收方沒有做正確的處理,會產生[亂碼]
爲什麼要有協議?
目的:爲了保障數據的正確傳輸[發送正確、接受正確、展示正確]
原因:因爲數據的傳輸,實在不同的個體之間進行傳輸的,不同的個體處理數據的方式可能不一致~必須通過協議讓數據傳輸的雙方按照一致的操作來處理數據
協議是怎麼制定的?
網絡互聯非盈利組織[OSI]~歐洲計算機制造協會聯盟[ISO]—>制定了一套協議標準
ISO/RM七層協議標準[簡化的4層協議標準]
所有編程語言的發展史à 標準的 制定史
常見的都有什麼協議?
FTP/TFTP/...
協議是專門用來格式化定義數據傳輸的~傳輸數據~傳輸端口
協議怎麼使用?
在具體的功能開發過程中,軟件開發時約定使用
HTTP:超文本傳輸協議~約定使用80端口;FTP[20/21];SSH[22];
HTTPS[443]
再說HTTPS
請簡單描述HTTP和HTTPS的區別? 請簡單描述數據安全方面,關於數據加密的一些手段? |
先說加密:
l 什麼是加密
加密:通過一定的數據算法,將原始的數據進行混淆運算,生成了一種和原始數據不一致的數據,~這個新生成的數據,就是被加密的數據
加密的核心:算法
明文:原始數據
密文:加密後的數據
l 加密的方式
單向加密:只需要加密,不需要解密的方式,如~用戶登錄密碼[新用戶註冊時,輸入了賬號+密碼,將用戶的賬號+(加密的密碼)存儲到數據庫;用戶登錄時,輸入賬號+密碼,將用戶輸入的賬號+(加密的密碼) 和 數據庫中的賬號+(加密的密碼) 進行比較,相同則登錄成功—就可以對用戶的登錄密碼進行保護]
雙向加密:需要加密,同時需要解密的方式,如~用戶在電商網站進行支付操作時,需要輸入支付密碼~爲了保證安全性,需要對支付密碼進行深層加密之後進行傳輸,服務器獲取到被加密的支付密碼~需要解密之後,再調用支付寶接口進行支付操作!
雙向加密~根據不同的加密解密方式,可以區分爲兩種操作
對稱加密:加密和解密使用同一套祕鑰[算法的核心]
非對稱加密:加密和解密使用不同的祕鑰,典型應用如HTTPS的加密通道
再說HTTPS:使用數字簽名證書SSL提供了數據傳輸安全通道的HTTP協議
再說加密:
爲了提高數據的安全性,並不一定對於明文數據直接加密,而是通過各種算法組合、迭代加密次數、添加鹽值混淆的手段,提高數據的安全性
明文:”admin”
加密:1混淆鹽值:’manager’~2迭代加密md5()加密1880次~3得到最終數據
開始進入web的世界!
目的:數據共享
通過提供服務器,在服務器上承載共享的數據,讓在網絡中的其他計算機可以分享到服務器上的數據,web數據共享
術語:
服務器:提供服務訪問的機器
硬件服務器:如個人PC、刀片等等
軟件服務器/web服務器:安裝在操作系統上,專門提供數據訪問服務的軟件,如網絡編程時開發的服務端程序、比較成熟的服務器~tomcat/tomee/apache/nginx/uwsgi..
客戶端:作爲服務器的用戶存在的終端~客戶端[訪問客戶所在的終端]
訪問服務器的所有的用戶,可以是PC、平板、手機、…
主機名稱:HOST~在網絡中工作的一臺PC的名稱,在網絡中通常通過IP表示
域名:IP地址的一種簡易記憶方式~通過自然人比較容易記憶的字符串,替代了複雜的ip地址,如:www.baidu.com-> [DNS域名解析] ->115.239.211.112
端口:應用程序和網絡進行通信的接口
資源路徑:訪問的具體的文件夾路徑http://www.baidu.com/index.html
web項目結構
web項目:【服務端】
兩部分[服務器 | web應用程序(web app)]
l 開發接口函數
def app(env, response): # env:環境參數,包含了請求中的所有信息 # response:響應參數~包含了響應中可以設置的數據 response(“200 OK”, [(“Content-type”, “text/html”)]) msg = “這是一條數據” return [msg.encode(“gbk”)] |
注意:就是一個普通函數,這個普通函數被加載到服務器中變成了當前web應用程序的接口函數 |
l 開發服務器
from wsgiref.simple_server import make_server # 創建服務器對象make_server(HOST, PORT, FUNCTION) server = make_server(“”, 8000, app) # 啓動服務器 server.serve_forever() |
使用了內置的實現了wsgi網關接口協議的服務器 開發比較簡單! >> 明天的開發,會更加簡單! 最底層[C/C++]à python開發[網絡編程]à 內置[wsgi]à 開發服務器 |
擴展1:關於請求方式 請求:客戶端通過url地址向服務器發送的一次數據成爲請求[request] HTTP1.1標準中,制定了8種請求方式,常見的有四種請求方式,常用的有兩種請求方式 GET:向服務器請求獲取數據 POST:向服務器提交[更新]數據 PUT:向服務器提交[添加]數據 DELETE:向服務器請求刪除數據 HEADER: OPTIONS: CONNECTION: TRACE: |
備註:HTTP1.1標準中,定義了不同的請求方式表示不同的含義,其實在項目實際操作過程中,最常用的就是GET/POST兩種方式,都是和服務器進行數據交互的! |
擴展2:請求狀態碼 在計算機程序開發過程中,NB人喜歡使用整數的方式表示特定的含義 在web開發過程中,請求返回數據結果,也會有一種錯誤碼方式展示請求結果 200:表示請求成功 402:請求需要收費 403:請求被禁止訪問 404:請求的資源沒有找到 500:表示服務器出錯了… |
【重要】
概念題[面試題]
² 請簡要描述HTTP和HTTPS請求協議的區別? ² 請描述常見的web開發技術,描述不同的開發語言的開發優勢?描述python在web應用開發方面的優勢? ² 什麼是WSGI? ² 什麼是web接口? |
操作題
u 可以獨立開發wsgi接口支持的web應用程序[demo01.py] u 可以參考開發無常薄 小應用程序[不同的請求URL,處理不同的功能] |
擴展題
l 請簡要描述get請求方式和post請求方式的區別! |