2019年10月8日 星期二

Django cookie 處理範例


Cookie 是存放在使用者電腦中的小檔案,

而且是明碼存放,

不適合儲存私密資料,例如:信用卡號、密碼等等,

在使用上有限制:


  • 瀏覽器只能儲存並使用300個cookie
  • 同一個伺服器只能存取20個cookie
  • cookie 必須小於 4k bytes

今天就來教大家如何使用 Django cookie :

Django cookie 處理範例

首先在 Chrome瀏覽器按 F12,

在上方工具列找到 Application ,

在左方的 Storage 找到 Cookies,

選擇目前的網址就能在右方看到目前的cookies,


定義 check_cookie 如下:

def check_cookie(request):
    if 'test_counter' not in request.COOKIES:
        tmpcounter = 1        msg = 'create counter'    else:
        tmpcounter = int(request.COOKIES['test_counter'])
        tmpcounter = tmpcounter + 1        msg = 'counter = ' + str(tmpcounter)

    res = HttpResponse(msg)
    res.set_cookie('test_counter', tmpcounter)
    return res

if 計數器不存在:
    將計數器設為 1
else :
    將計數器+1

最後使用 set_cookie 將其存到 cookie 中,

下圖為第一次執行 check_cookie , 因為 cookie 不存在所以需要建立一個:


第二次執行時,

由於 cookie 已經存在,

故僅顯示目前次數


刪除的話也很簡單,

先檢查 cookie 是否存在,

若存在就刪除 cookie 並顯示刪除的值,

不存在就顯示 No cookie

def del_cookie(request):
    if 'test_counter' in request.COOKIES:
        msg = 'del counter, value = ' + str(request.COOKIES['test_counter'])
        res = HttpResponse(msg)
        res.delete_cookie('test_counter')
        return res
    else:
        return HttpResponse('No cookie')

底下為執行的畫面,

當存在 cookie 就顯示目前值後刪除:


若此 cookie 不存在的話,

顯示 No cookie



set_cookie(key,value='',max_age=None,expires=None)


的語法如上,

由於 cookie 是以 dict 方式存放,

故第一個與第二個參數放置 cookie 的 key值與 value 值,

max_age 單位為秒數,設定 cookie 存在的時間

expires 單位為 date time ,超過設定的時間, cookie 就會失效。


刪除的語法就比較簡單了:


delete_cookie('key值')


只需要指定 cookie 的 key 值即可。

cookie 與 session 常都是同時提起的,

不過在此就留待下回分解吧,

這裡是不及格研究室,

we are here , we are coding 













沒有留言: