Django開發之Cookie和Session的用法
前言:狀態保持,有時需要保存下來用戶瀏覽的狀態,比如用戶是否登錄過,瀏覽過哪些商品等。 實現狀態保持主要有兩種方式:在客戶端存儲信息使用Cookie。在服務器端存儲信息使用Session。
1.客戶端Cookie
Cookie的特點:
- Cookie以鍵值對的格式進行信息的存儲。
- Cookie基於域名安全,不同域名的Cookie是不能互相訪問的,如訪問itcast.cn時向瀏覽器中寫了Cookie信息,使用同一瀏覽器訪問baidu.com時,無法訪問到itcast.cn寫的Cookie信息。
- 當瀏覽器請求某網站時,會將瀏覽器存儲的跟網站相關的所有Cookie信息提交給網站服務器。
注意:Cookie,就是把信息存儲在了瀏覽器端,所以我們不能存儲一些重要的私密信息,使用場合:記住用戶名,網站的廣告推送。
代碼實現:
def cookie_set(request):
request.set_cookie('c1', '你好c1')
return JsonResponse({'ret': 0})
def cookie_get(request):
if 'h1' in request.COOKIES:
c1 = request.COOKIES['c1']
return JsonResponse({'ret': 0,'msg':c1})
return JsonResponse({'ret': 1,'msg':'沒有獲取到'})
2.服務器端Session
對於敏感、重要的信息,建議要儲在服務器端,不能存儲在瀏覽器中,如用戶名、餘額、等級、驗證碼等信息。
2.1 對象及方法
1.以鍵值對的格式寫session。
request.session[‘鍵’]=值
2.根據鍵讀取值。
request.session.get(‘鍵’,默認值)
3.清除所有session,在存儲中刪除值部分。
request.session.clear()
4.清除session數據,在存儲中刪除session的整條數據。
request.session.flush()
5.刪除session中的指定鍵及值,在存儲中只刪除某個鍵及對應的值。
del request.session[‘鍵’]
6.設置會話的超時時間,如果沒有指定過期時間則兩個星期後過期。
request.session.set_expiry(value)
注意:
- 如果value是一個整數,會話將在value秒沒有活動後過期。
- 如果value爲0,那麼用戶會話的Cookie將在用戶的瀏覽器關閉時過期。
- 如果value爲None,那麼會話永不過期。
2.2 案例
def set_session(request):
request.session["username"] = "fly"
# request.session.set_expiry(5)
return JsonResponse({'ret': 0,'msg':"設置session"})
def get_session(request):
if request.session.has_key('username'):
username = request.session["username"]
return JsonResponse({'ret': 0, 'msg': username})
else:
return JsonResponse({'ret': 1, 'msg': '沒有獲取到'})
def clear_session(request):
# request.session.clear()
request.session.flush()
return JsonResponse({'ret': 0, 'msg': '清除成功'})
結束!!!