- http請求本質
瀏覽器(socket客戶端):
二、socket.connect(ip,端口)
三、socket.send("http://www.baidu.com/index.html")
規則:http協議
GET請求:
「GET /index.html?k1=1&k2=2 Http/1.1\r\nhost:www.baidu.com\r\ncontent-type:application/json\r\n\r\n」
POST請求:
「POST /index.html?k1=1&k2=2 Http/1.1\r\nhost:www.baidu.com\r\ncontent-type:application/json\r\n\r\nusername=alex&pwd=123123」html
請求頭和請求體使用\r\n\r\n分割,前面頭,後面是體前端
請求頭:python
請求體:數據庫
六、獲取響應
響應頭,響應體 = data.split('\r\n\r\n')
響應頭與響應頭之間用\r\n 分割django
七、斷開鏈接json
網站(socket服務端):
一、服務端運行: 監聽ip,端口
四、字符串 = server.recv()瀏覽器
頭,體=data.split(「\r\n\r\n=」)cookie
request.POST.get()session
五、服務端響應app
conn.send('......')
響應頭:
響應體:
七、斷開鏈接
總結:
a. Http請求中本質都是字符串
b. Http請求短鏈接 (請求,響應,斷開鏈接)
c. 請求以及響應都有: 頭、體
請求頭與請求體之間\r\n\r\n 分割 請求頭下請求頭之間用\r\n分割
- Web框架
Django本質:
socket(django用的是別人的模塊「wsgiref」)
解析和封裝http請求(*)
使用Django:
a.安裝
b.建立項目
project
django-admin startproject mysite
app
cd mysite
python manage.py startapp app01
寫代碼(******)
python manage.py runserver ip:port 啓動
視圖函數
def index(request):
request.GET
request.body #原生的請求體
request.POST #若是請求頭中: content-type:urlencode-form...... 纔將request.body原生內容轉換成字典
-可能有值
-可能沒值(是由於沒作轉換,能夠去看下body有沒有值)
request.method
request.Meta
request.GET.get()
request.GET.getlist() #前端用chkeckbox多選 ,select單選 ,想獲取多個值 用getlist
request.POST
return HttpResponse(‘字符串/字節’)
return render(request,'html路徑',{})
return redirect('URL') #返回的是URL,而不是URL對應的html數據
- 模板
- 繼承
- 模板語言
for
if
- filter,sample_tag
- Model 操做
-建立表:業務線
- model.xx.objects.create(name='歐美')
- models.xx.objects.create(**dic)
-models.xx.objects.filter(id__gt=1).delete()
-models.xx.objects.filter(id=1).delete()
-models.xx.objects.exclude(id=1).delete()
-models.xx.objects.filter(id=1).update(name='ddd')
-models.xx.objects.filter(id=1).update(**dic)
建立表:
業務線
主機表
id host port baidu
# queryset = [對象,對象,。。。]
objs = models.xx.objects.all()
for row in objs:
row.id
row.host
row.port
row.bs.name
# queryset = [{},{}。。。。。]
- objs = models.xx.objects.all().values('id','host','port')
obj = models.xx.objects.filter(user='alex') 獲得的是queryset
obj = models.xx.objects.filter(user='alex').fisrt()獲得的是對象,只要是對象就能夠.調用屬性(字段)
obj.mm.add(1)
obj.mm.add(11)
queryset = obj.mm.all() alex負責的全部業務線 [業務線對象 ,業務線對象]
二手車業務線由哪些人負責
obj = models.business_unit.objects.filter(name="二手車").first
query = obj.userinfo_set.all() #【用戶對象,用戶對象】
今日內容:
一、登陸:
- 密碼,加密
- 用戶登陸以後,才能訪問某些頁面
二、cookie是什麼?
- 保存在客戶端瀏覽器上的鍵值對 {k:v}
- cookie依附在請求體或響應頭中出現
- 發送請求時,會自動攜帶本身網站的cookie (瀏覽器經過域名或url進行分割對不一樣網站的cookie)
- 應用:
- 實現登陸
- 投票
- 使用cookie:
- 設置cookie:
- 獲取cookie
- cookie超時時間 path='/' 訪問指定url時,才能讀取到cookie 針對哪些url生效 / 根表明所有
- domain=None 當前域名或二級域名,默認是本身的當前域名
三、session
session是什麼?
保存在服務端的鍵值對
ps:依賴cookie
# 一、生成隨機字符串
# 二、cookie發送給客戶端
# 三、服務端隨機字符串做爲key,本身設置一些value{}
在django中內部把上邊三步都作了,只須要下面一條命令就能夠
request.session['yyyyyyy'] = user
session的 key和value存在django.session 數據庫表中
四、CSRF,跨站請求僞造
五、牛逼自定義分頁