1.python中3個經常使用web框架html
有django,flask,tornado,他們都主要由下面3大元素組成:python
a:socketweb
b:路由跟視圖函數匹配關係數據庫
c:模板渲染django
幾大框架的各自特色:json
django:a,用了別人的wsgiref b,本身寫的 c,本身寫的flask
flask: a 用了別人的 b, 本身寫的 c,用了別人的jinja2服務器
tornado:a,本身寫的 b,本身寫的 c,本身寫的網絡
2.htpp協議:app
特色:1.基於TCP/IP協議之上的應用層協議
2.基於請求-響應模式
3.無狀態保存
4.無鏈接
#無狀態保存。HTTP協議自身不對請求和響應之間的通訊狀態進行保存。也就是說在HTTP這個級別,協議對於發送過的請求或響應都不作持久化處理。使用HTTP協議,每當有新的請求發送時,就會有對應的新響應產生。協議自己並不保留以前一切的請求或響應報文的信息。這時爲了更快地處理大量事務,確保協議的可伸縮性,而特地把HTTP協議設計成如此簡單的。但是,隨着web的不斷髮展,因無狀態而致使業務處理變得棘手的狀況增多了。好比,用戶登陸到宜家購物網站,即便他跳轉到該站的其餘頁面後,也須要能繼續保持登陸狀態。針對這個案例,網站爲了能掌握是誰送出的請求,須要保存用戶的狀態。HTTP/1.1雖然是無狀態協議,但爲了實現指望的保持狀態功能,因而引入了Cookie技術。有了Coolkie再用HTTP協議通訊,就能夠管理狀態了。
#無鏈接
無鏈接的含義是限制每次鏈接只處理一個請求。服務器處理完客戶的請求,並受到客戶的應答後,即斷開鏈接採用這種方式能夠節省傳輸時間。
請求格式:請求行,請求頭,空行,請求體
響應格式:起始行,響應頭部,空行,響應報文主體
重點:
請求:
請求首行 get /http/1.1 \r\n
請求頭:key:value\r\n
請求體
響應:
響應首行 http/1.1 200 ok \r\n
響應頭:key:value
響應體:html的代碼
補充:使用get請求數據時,提交方式是?name=aa這種形式
127.0.0.1:8000/book_list/?name=aa
django中json數據從POST中是取不出來的,只能從body中取出,而後反序列化
3.django的安裝與使用
方式1:在pacharm的Terminal命令行裏輸入 pip3 install django==1.11.9 #指定版本號爲1.11.9,若是不指定版本號,則下載的是最新版
方式2:在pacharm的Project Interpreter右側點+號,再輸入django再點Specify version能夠選擇版本號
方式3:cmd命令行
d:進入d盤
cd /pb進入pb文件夾
django-admin startproject hg(項目名)開啓新項目
cd pb/hg進入到項目文件夾
python3 manage.py startapp app01(app名)建立app
python3 manage.py runserver 127.0.0.1:8000開啓項目
使用:項目中不要有中文!
計算機名字不要是中文
一個工程就是一個項目
django中app的概念:
大學:---------------項目
信息學院-------------------app01
物理學院-------------------app02
不一樣功能放在不一樣app裏,便於管理。
建立app的方法:1在pecharm建立django項目時點More settings寫上app名字
2在termainal裏輸入命令
python3 manage.py startapp app01
建立了app之後,要在settings裏進行配置
templates文件夾
將app路徑放進配置
form提交的四種方式
1)<form action="http://127.0.0.1:8000/login/" method="post">
2)<form action="/login/" method="post"> 推薦使用
3)<form aciton='' method="post">
4)<form action='login.html' method='post'>
在settings中要配置下靜態文件
STATIC_URL='/static/' 通常不要改,指的是對應url中static這個模塊,而不是static文件夾
在項目根文件夾下建立一個static文件夾,再進行添加路徑
STATICFILES_DIRS=[
os.path.join(BASE_DIR,‘static’),建立的文件夾路徑(能夠寫多個)
os.path.join(BASE_DIR,‘static’)
]
request.method 前臺提交過來的請求方式
request.POST(至關於字典) post形式提交過來的數據(http請求報文的請求體中)
request.POST.get('name') 推薦使用get取值(取出列表中的最後一個)
request.POST['name'] 不推薦使用,萬一有網絡延遲等問題,沒有取到值的話會崩潰
request.POST.getlist('name') 取列表全部值
get:獲取數據,頁面,攜帶數據是不重要的數據(數據量有大小限制)
post:日後提交數據
5.APPEND_SLASH
在settings裏面能夠進行配置該參數
APPEND_SLASH=False則不會在輸入網址時自動加/ 在django中,默認是設置成True的。
APPEND_SLASH=True則會在輸入網址時自動加/
HttpResponse返回的是普通類型的字符串
django是MTV模式:
M:model 模型 負責業務對象和數據庫的關係映射(ORM)
T:Template 模板 負責如何把頁面展現給用戶(html)
V:view 視圖 負責業務邏輯,並在適當時候調用model和template
MVC模式:
M:model 模型
V:view 視圖
C:controller 控制器:url+view
M是應用程序中用於處理應用程序數據邏輯的部分。一般模型對象負責在數據庫中存取數據。
V是應用程序中處理數據顯示的部分(就是顯示)。
C是應用程序中處理用戶交互的部分。一般控制器負責從視圖讀取數據,控制用戶輸入,並向模型發送數據。
6.Django的生命週期
7.django中數據表遷移命令
1)python3 manage.py makemigrations 記錄一下數據庫的變化
2)python3 manage.py migrate 將變化同步到數據庫中
3)新建app的命令
python3 manage.py startapp blog