1.http概述
當前版本:1.1
http協議是乙個客戶端和服務端請求應答的標準tcp,如瀏覽器作為客戶端傳送請求到伺服器指定埠 ,伺服器將內容返回給伺服器
2.協議格式
http定義了客戶端與服務端資料互動的協議
request客戶端向服務端傳送請求報文 ,包括請求行(請求方法 空格 url 空格 協議版本 回車符換行符) ,請求頭(key:value 回車符換行符 key:value 回車符換行符*2),請求資料
####乙個request請求(get沒有請求資料,攜帶在url上)b''
response服務端響應客戶端資料 ,包括狀態行(協議版本 空格 狀態碼 空格 狀態碼描述 回車符換行符),響應頭(key:value 回車符換行符:value 回車符換行符*2),響應資料
請求頭中一般有瀏覽器資訊,cookie
響應頭中一般有編碼,時間
3.建立最簡單的http服務端
importconn.send(b'http/1.1 200 ok\r\ncontent-type: text/html;charset=utf-8\r\n\r\n') #響應資料http協議socket
ser1 =socket.socket()
ser1.bind((
'127.0.0.1
',8888))
ser1.listen(5)
while 1:
conn.addr =ser1.accept()
data = conn.recv(1024)
print(data) #
請求request資料
conn.send(''.encode('utf-8')) #資料
conn.close()
ser1.close()
4.動態頁面與靜態頁面
動態頁面就是與後端互動獲取資料展示頁面 ,靜態頁面就是展示頁面不能互動
5.伺服器程式與應用程式
伺服器程式完成了socket的連線的部分 ,但是它不關心業務邏輯**處理連線請求
應用程式完成了業務邏輯相關** django框架完成這部分,返回什麼頁面 ,不考慮如何與客戶端連線
問題:伺服器程式與應用程式之間如何互動規則 ,wsgi伺服器閘道器介面(生產的uwsgi ,django預設使用了wsgiref))
nginx+uwsgi+django
6.python的其他框架
django完成了業務邏輯**+動態頁面返回
flask完成了業務邏輯**
tornado完成了伺服器程式+業務邏輯**+返回動態頁面
7.軟體設計架構模式
1)mvc框架
controller+model+view
控制器:業務邏輯 ,訪問位址 ,執行函式
模型: 資料庫模型避免sql
檢視: 展示的動態頁面
2)mtv框架
django根據mvc重新設計了一下model+templates+view
模型: orm資料庫物件關係模型
模板: 負責展示給使用者的頁面
檢視: 負責業務邏輯
額外的: url路由分發器
二者比較:
mvc可以說是廣義 ,控制器對應mtv的檢視函式與路由 ,檢視對應模板 ,模型一直
8.django中的request與reponse物件
request請求物件是檢視函式中的必要引數 ,物件封裝了本次請求的http協議中的所有相關資訊
request.method #請求型別, 在cbv中dispatch方法會將該型別與已知列表匹配 ,反射獲取我們自定義的方法執行
request.get.get('關鍵字') #從get請求中獲取引數 ,可以獲取url中?後面的引數
request.get.urlencode() #獲取get請求上的引數 ,並進行編碼
request.post.get('關鍵字') #從post請求中獲取表單中的內容值 ,表單中提交的內容可以根據這個方法獲取
request.path_info #獲取請求路徑資訊 ,不包含位址埠 ,?後的引數
request.body #請求體 ,僅post請求有 ,有明文的請求資料
request.scheme #本次請求協議 http https
request.encoding #獲取提交資料的編碼方式
request.cookies #獲取cookies
request.session #獲取session資訊
request.files #用於上傳檔案 ,需要放入form表單中 且enctype="multipart/form-data"
response響應的幾種方式
httpresponse('字串') #可以直接返回html標籤 或字串
render(request ,'模板檔名' ,) #返回模板頁面 ,還可以返回request物件和引數給模板檔名
redirect(重定向) #重定向到其他url
jsonresponse(data,safe=false) #將資料轉為json型別返回 ,如果資料是字典可以不加safe=false
9.檔案上傳簡例
上傳完成')
####html模板
django 基礎 1 web框架原理
web 框架原理 1.內容回顧 1.課前練習題 2.前面內容複習 1.mysql 1.sql語句 2.設計表的能力 3.原理 2.前端 1.html css js 2.jquery 3.bootstrap 3.併發程式設計 1.程序 2.執行緒 3.協程 4.io多路復用 4.網路程式設計 1.so...
Web開發 Django基礎建立工程Day2
在使用flask框架時,專案工程目錄的組織與建立是需要我們自己手動建立完成的。在django中,專案工程目錄可以借助django提供的命令幫助我們建立。建立工程的命令為 django admin startproject 工程名稱例如 想要在桌面的code目錄中建立乙個名為demo的專案工程,可執行...
Python進行web開發 django
使用dows命令操作網路頁面 步驟如下 1.先在某磁碟下建立乙個新的資料夾web 資料夾名,任意取名 web資料夾下再新建乙個blog資料夾 任意取名 2.根據idea軟體開發工具中儲存python的project sdk的路徑找到django admin.exe ps python的安裝路徑一定要...