Django cookie 處理範例

首頁 >> 結帳英文 >> 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 



================================
分享與讚美,是我們繼續打拼的原動力.
若文章對您有幫助,望請不吝按讚或分享.
或者對影片有興趣可以訂閱頻道接收通知
================================
YouTube 頻道
FB 粉絲專頁
================================

guangyaw

重點主題: 程式設計: Python , Django,Android 工具與軟體: Open edX,Linux工具,Blender教學 分享各地美景與產品使用心得,遊戲實況,甚至影視戲劇等, 您的訂閱就是頻道成長的原動力。 YouTube 頻道: https://youtube.com/xyawli

You may also like...

1 Response

  1. 2019-10-08

    […] 之前提到過 Django cookie 處理, […]

發佈留言