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': '清除成功'})

結束!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章