cookie和session是個啥,鬼畜都知道,因此不說鳥。直接開記錄在djano框架下面如何操做cookie和session。python
存取cookiesweb
讀取cookies很簡單,由於讀取cookies可使用HttpResquest,每個HttpResquest對象都有一個COOKIES對象,能夠用它讀取任何瀏覽器發送給視圖的cookies。數據庫
由於每一個視圖函數的第一個參數都是request,其實它就是一個HtppResquest對象,因此直接使用request.COOKIES讀取cookies就好。django
寫COOKIES就使用HttpResquest對象的set_cookie()方法,set_cookie有一些可選參數來指定一些特殊操做。瀏覽器
session操做cookie
開啓session(他是經過一箇中間件和一個模型來實現的)。session
1.編輯MIDDLEWARE_CLASSES,確保裏面已經包含了django.contrib.sessions.middleware.SessionMiddleware。框架
2.確認INSTALLED_APPS,確保裏面已經含有一個叫django.contrib.sessions的鬼畜。函數
其實這兩項,通常默認就有了,前提是你的項目是用python manage.py startproject mysite來建立的。測試
視圖中使用session
SessionMiddleware被激活之後,每一個視圖函數的第一個參數request(也就是HttpResquest對象)都有一個session屬性,它和cookie同樣,也是個字典型的對象,能夠像使用普通字典那樣使用。
在操做session時候的一些忌諱:
1.使用正常的的字符串來訪問字典,而不是整數,對象,或者其餘什麼很討厭的東西。
2.key值最好不要使用下劃線來命名,由於有些是保留的,可是通常也用不到。
3.不要用一個新對象來替代request.session。
4.不要向request.session中存屬性。
測試COOKIE
固然鳥,有些賤人就是喜歡關閉cookie,因此做爲蛋疼的web開發者們,想在人家機器上存儲一個cookie都得先test一下。
可使用request.session.set_test_cookie()來測試,讓後在其餘的視圖中使用request.session.test_cookie_worked(),兩次測試是不在同一個視圖函數中的,爲何要這樣,跟cookie的工做原理有關。
delete_test_cookie能夠用來刪除用於測試而設置的cookie。
在視圖以外使用session
咱們可使用django的數據庫API來存取session,咱們使用get_decoded來讀取實際的session數據。
有效期
若是SESSION_EXPIRE_AT_BROWSER_CLOSE設置爲false,那麼cookie在瀏覽器中保存週期是SESSION_COOKIE_AGE秒。若是設置爲true,那麼關閉瀏覽器時候,就會失效。