cookie :客戶端瀏覽器上的一個文件,用鍵值對的方式存儲在文件中。在伺服器端和客戶端都可以對其進行設置和獲取。利用這一特性,可以對用戶進行登錄認證,設置分頁.... 伺服器端: 在views.py中: 設置 rep = HttpResponse(...) 或 rep = render(reque ...
cookie
:客戶端瀏覽器上的一個文件,用鍵值對的方式存儲在文件中。在伺服器端和客戶端都可以對其進行設置和獲取。利用這一特性,可以對用戶進行登錄認證,設置分頁....
伺服器端:
在views.py中:
設置
rep = HttpResponse(...) 或 rep = render(request, ...),rep = redirect(...)
rep.set_cookie(key,value,...)
rep.set_signed_cookie(key,value,salt='加密鹽',...)
參數: key, 鍵 value='', 值
max_age=None, 超時時間 //秒
expires=None, 超時時間(IE requires expires, so set it if hasn't been already.) //
import datetime
current_date = datetime.datetime.utcnow()
current_date = current_date + datetime.timedelta(seconds=5)
res.set_cookie('key',"value",expires=current_date)
path='/', Cookie生效的路徑,/ 表示根路徑,特殊的 跟路徑的cookie可以被網站的任何url的頁面訪問,如"/index",只能index下能訪問
domain=None, Cookie生效的功能變數名稱,在哪個子url下生效
secure=False, https傳輸(https時,設為ture)
httponly=True 只能http協議傳輸,無法被JavaScript獲取(不是絕對,底層抓包可以獲取到也可以被覆蓋)
獲取:
def cookie(request): # 獲取 Cookie #
request.COOKIES # 客戶端發來的所有Cookie #
request.COOKIES['username111'] # 這個Cookie,就是字典
request.COOKIES.get('username111')
在伺服器端登錄時設置cookie:
def login(request):
msg = ''
if request.method == 'POST'://提交的數據
username = request.POST.get('username')
password = request.POST.get('password')
v = models.Administrator.objects.filter(username=username,password=password).count()//查詢資料庫
if v:
rep = redirect('/app/index/')
rep.set_cookie('username',username)
return rep
else:
msg = '用戶名或密碼錯誤'
return render(request,'login.html',{'msg':msg})
客戶端訪問其他url時,獲取cookie對其進行身份認證:
def index(request):
username = request.COOKIES.get('username')
if username:
return render(request,'index.html',{'username':username})
else:
return redirect('/app/login')
客戶端:
<script src="/static/jquery-2.1.4.min.js"></script>//導入jquery
<script src="/static/jquery.cookie.js"></script>//導入jQuery.cookie用於方便操作cookie
<script>
// $.cookie()
//一個參數: $.cookie(k) 獲取值
//二個參數: $.cookie(k,v) 設置值
$.cookie('k','v',{'path': '/index.html'})//{}中參數和伺服器端一致,鍵值對的方式
</script>
補充:
obj.set_signed_cookie('username',"kangbazi",salt="asdfasdf") # 加密方式設置cookie
request.get_signed_cookie('username',salt="asdfasdf") # 加密獲取