Django(part36)--cookies
學習筆記,僅供參考,有錯必究
文章目錄
- cookies和session
- cookies
- 關于自動登錄
- HttpResponse 關于cookie的添加修改刪除
- Django中關于cookie的使用
- 獲取cookie
- 舉個例子
cookies和session
cookies
cookies是保存在客戶端瀏覽器上的存儲空間,通常用來記錄瀏覽器端的信息和當前連接的確認信息;cookies 在瀏覽器上是以鍵-值對的形式進行存儲的,鍵和值都是以ASCII字符串的形式存儲(不能是中文字符串);在Django 服務器端設置瀏覽器的COOKIE必須通過 HttpResponse對象來完成。
注意,cookies跟域名相關,也就說如果我們在網(wǎng)站A獲取了cookies,那么這個cookies在另一個網(wǎng)站B就無效了。同時,如果我們在網(wǎng)站A拿到了一個cookies,在此之后,無論我們訪問網(wǎng)站A的哪個網(wǎng)頁,都會帶著這個cookies(在該cookies過期之前)。
關于自動登錄
一般情況下,在登錄某網(wǎng)站時會用到cookies,比如,我們在登錄微博時,如果點擊記住我,那么我們的瀏覽器端就會以cookie的形式記住用戶名和密碼,下次登錄時,我們的賬戶和密碼就會被自動填入文本框,我們就不需要再輸入一次了:
HttpResponse 關于cookie的添加修改刪除
- 添加和修改cookie
- 刪除cookie
Django中關于cookie的使用
- 方法1:通過HttpResponse將cookie保存進客戶端
用法:
from django.http import HttpResponse resp = HttpResponse() resp.set_cookie('cookies名', cookies值, 超期時間)- 方法2:使用render對象將cookie保存進客戶端
用法:
from django.shortcuts import render resp = render(request,'xxx.html',locals()) resp.set_cookie('cookies名', cookies值, 超期時間)- 方法3: 使用redirect對象將cookie保存進客戶端
用法:
from django.shortcuts import redirect resp = redirect('/') resp.set_cookie('cookies名', cookies值, 超期時間)獲取cookie
我們可以通過request.COOKIES(請求里的Cookies對象) 綁定的字典(dict) 獲取客戶端的COOKIES數(shù)據(jù):
value = request.COOKIES.get('cookies名', '沒有值') print("cookies名 = ", value)舉個例子
我們創(chuàng)建一個新項目mywebsite_bookstore,在項目下添加兩個應用(bookstore, userinfo),創(chuàng)建一個模板文件templates,在mysql中創(chuàng)建新數(shù)據(jù)庫mybookstore,再進行一系列配置,這個過程我就不演示了。
配置完成之后,我們在主urls.py中添加兩個路由:
from django.urls import re_path from django.contrib import admin from django.conf.urls import include from . import viewsurlpatterns = [re_path(r'^admin/', admin.site.urls),re_path(r'^bookstore/', include('bookstore.urls')),re_path(r'^test_cookie/', views.test_cookie),re_path(r'^show_cookie/', views.show_cookie),re_path(r'^userinfo/', include('userinfo.urls')), ]在主視圖文件views.py中添加兩個視圖函數(shù):
def test_cookie(request):resp = HttpResponse("OK")return respdef show_cookie(request):dic = request.COOKIESreturn HttpResponse(str(dic))向http://127.0.0.1:8000/show_cookie/發(fā)起請求:
我們看到了一個字典,這個字典就是瀏覽器給予服務器的cookie信息。
我們在Chrome瀏覽器的開發(fā)者工具中,也可以查看和操作瀏覽器端所有的Cookies 值。
我們打開開發(fā)者工具(DevTool),依次進入Application、Storage、Cookies:
我們也可以在DevTool中將這個Cookie刪除,刪除后,我們再刷新一下http://127.0.0.1:8000/show_cookie/,發(fā)現(xiàn)只剩下一個空字典了:
這時,若我想添加一個Cookie,那我們可以在views.py中操作:
def test_cookie(request):resp = HttpResponse("OK")resp.set_cookie('myschool', 'goatbishop')return resp我們向http://127.0.0.1:8000/test_cookie/發(fā)起請求:
再向http://127.0.0.1:8000/show_cookie/發(fā)起請求:
查看DevTool,發(fā)現(xiàn)多了一個Cookie:
我再設置cookie存活時間為10秒:
def test_cookie(request):resp = HttpResponse("OK")resp.set_cookie('myschool', 'goatbishop', max_age=10)return resp我們先向http://127.0.0.1:8000/test_cookie/發(fā)起請求,再向http://127.0.0.1:8000/show_cookie/發(fā)起請求:
等待11s,我們刷新DevTool,發(fā)現(xiàn)這個Cookie消失了:
這時,我們設置cookie存活時間為7天(7$\times242424\times606060\times$60s):
def test_cookie(request):resp = HttpResponse("OK")resp.set_cookie('myschool', 'goatbishop', max_age=7*24*60*60)return resp首先,向http://127.0.0.1:8000/test_cookie/發(fā)起請求,得到新cookie后,我們再利用響應對象的delete_cookie方法將該cookie刪除:
def test_cookie(request):resp = HttpResponse("OK")#刪除和Cookiesresp.delete_cookie('myschool')return resp總結
以上是生活随笔為你收集整理的Django(part36)--cookies的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Django(part35)--多对多映
- 下一篇: Django(part37)--sess