2019年10月8日 星期二

Django session 處理範例教學


之前提到過 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



承襲之前的範例:
def check_session(request):
    if 'stmp_counter' not in request.session:
        tmpcounter = 1        
msg = 'create counter'    
    else:
        tmpcounter = int(request.session['stmp_counter'])
        tmpcounter = tmpcounter + 1       
        msg = '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')
透過 check_session 紀錄使用者瀏覽網站的次數,

如果 session 存在就將其加 1 ,

不存在的話,

就設定 session 為 1 ,

request.session.set_expiry(3600)

則是設定過期時間為一個小時。


透過 del 刪除特定的 session,

僅需使用

del requestion['session key']

若 session 不存在,

就顯示 No session 。

不管是使用有加密的 session 或者明碼存放在使用者電腦的 cookie ,

各有利弊,

只需要選擇適合的使用情境即可。

這裡是不及格研究室,

we are here , we are coding 





沒有留言: