之前提到過 Django cookie 處理,
cookie 的缺點也是很明顯的,
故只能用來存取一些比較不重要的資料,
現在就來教大家另一種作法:
Django session 處理範例教學
與 cookie 相同,session 也是使用 dict 方式存取,
預設有效時間為兩周,
可透過
request.session.set_expiry()
修改 session 過期的時間,
在使用 session 之前,
先在 settings.py 找到底下兩個 item ,
通常預設是打開的,
要使用 session 的話要有這兩個 item。
同樣在 Chrome 瀏覽器中按 F12 ,
在 Storage 的 Cookies 中可找到包含 cookie 與 session ,
可看到 cookie 存放的是明碼的資訊,
此處範例的 cookie 為 19
但 session 僅能看到 session id
承襲之前的範例:
透過 check_session 紀錄使用者瀏覽網站的次數,def check_session(request): if 'stmp_counter' not in request.session: tmpcounter = 1msg = 'create counter'else: tmpcounter = int(request.session['stmp_counter']) tmpcounter = tmpcounter + 1msg = 'counter = ' + str(tmpcounter) res = HttpResponse(msg) request.session['stmp_counter'] = tmpcounter request.session.set_expiry(3600) return res def del_session(request): if 'stmp_counter' in request.session: msg = 'del counter, value = ' + str(request.session['stmp_counter']) res = HttpResponse(msg) del request.session['stmp_counter'] return res else: return HttpResponse('No session')
如果 session 存在就將其加 1 ,
不存在的話,
就設定 session 為 1 ,
request.session.set_expiry(3600)
則是設定過期時間為一個小時。
透過 del 刪除特定的 session,
僅需使用
del requestion['session key']
若 session 不存在,
就顯示 No session 。
不管是使用有加密的 session 或者明碼存放在使用者電腦的 cookie ,
各有利弊,
只需要選擇適合的使用情境即可。
這裡是不及格研究室,
沒有留言:
張貼留言