django - 總結 - cookie|session

Cookie是經過HTTP請求和響應頭在客戶端和服務器端傳遞的。數據庫

在Web開發中,使用session來完成會話跟蹤,session底層依賴Cookie技術。 django

---------------------設置Cookie-----------------
 1 class HttpResponseBase:
 3         def set_cookie(self, key,                  鍵
 4                      value='',            值
 5                      max_age=None,        超長時間 
 6                               cookie須要延續的時間(以秒爲單位)
 7                               若是參數是\ None`` ,這個cookie會延續到瀏覽器關閉爲止。
 8 
 9                      expires=None,        到期時間
10                                  expires默認None ,cookie失效的實際日期/時間。 
11                                 
12 
13                      path='/',           Cookie生效的路徑,
14                                                  瀏覽器只會把cookie回傳給帶有該路徑的頁面,這樣能夠避免將
15                                                  cookie傳給站點中的其餘的應用。
16                                                  / 表示根路徑,特殊的:根路徑的cookie能夠被任何url的頁面訪問
17                      
18                              domain=None,         Cookie生效的域名
19                                                 
20                                                   你可用這個參數來構造一個跨站cookie。
21                                                   如, domain=".example.com"
22                                                   所構造的cookie對下面這些站點都是可讀的:
23                                                   www.example.com 、 www2.example.com 
24                                  和an.other.sub.domain.example.com 。
25                                                   若是該參數設置爲 None ,cookie只能由設置它的站點讀取。
26 
27                      secure=False,        若是設置爲 True ,瀏覽器將經過HTTPS來回傳cookie。
28                      httponly=False       只能http協議傳輸,沒法被JavaScript獲取
29                                                  (不是絕對,底層抓包能夠獲取到也能夠被覆蓋)
30                   ): pass
def set_signed_cookie(self, key, value, salt='', **kwargs):
 
 
-------------獲取值--------------------
1 request.COOKIES.get("key")  
1 request.get_signed_cookie(key, default="默認值", salt='', max_age=None)

 

------------刪除cookie-------------------
1 response.delete_cookie("cookie_key",path="/",domain=name)
 

session瀏覽器

 1 # 獲取、設置、刪除Session中數據
 2 request.session['k1']
 3 request.session.get('k1',None)
 4 request.session['k1'] = 123
 5 request.session.setdefault('k1',123) # 存在則不設置
 6 del request.session['k1']
 7 
 8 
 9 # 全部 鍵、值、鍵值對
10 request.session.keys()
11 request.session.values()
12 request.session.items()
13 request.session.iterkeys()
14 request.session.itervalues()
15 request.session.iteritems()
16 
17 # 會話session的key
18 request.session.session_key
19 
20 # 將全部Session失效日期小於當前日期的數據刪除
21 request.session.clear_expired()
22 
23 # 檢查會話session的key在數據庫中是否存在
24 request.session.exists("session_key")
25 
26 # 刪除當前會話的全部Session數據
27 request.session.delete()
28   
29 # 刪除當前的會話數據並刪除會話的Cookie。
30 request.session.flush() 
31     這用於確保前面的會話數據不能夠再次被用戶的瀏覽器訪問
32     例如,django.contrib.auth.logout() 函數中就會調用它。
33 
34 # 設置會話Session和Cookie的超時時間
35 request.session.set_expiry(value)
36     * 若是value是個整數,session會在些秒數後失效。
37     * 若是value是個datatime或timedelta,session就會在這個時間後失效。
38     * 若是value是0,用戶關閉瀏覽器session就會失效。
39     * 若是value是None,session會依賴全局session失效策略。
 1 1. 數據庫Session
 2 SESSION_ENGINE = 'django.contrib.sessions.backends.db'   # 引擎(默認)
 3 
 4 2. 緩存Session
 5 SESSION_ENGINE = 'django.contrib.sessions.backends.cache'  # 引擎
 6 SESSION_CACHE_ALIAS = 'default'                            # 使用的緩存別名(默認內存緩存,也能夠是memcache),此處別名依賴緩存的設置
 7 
 8 3. 文件Session
 9 SESSION_ENGINE = 'django.contrib.sessions.backends.file'    # 引擎
10 SESSION_FILE_PATH = None                                    # 緩存文件路徑,若是爲None,則使用tempfile模塊獲取一個臨時地址tempfile.gettempdir() 
11 
12 4. 緩存+數據庫
13 SESSION_ENGINE = 'django.contrib.sessions.backends.cached_db'        # 引擎
14 
15 5. 加密Cookie Session
16 SESSION_ENGINE = 'django.contrib.sessions.backends.signed_cookies'   # 引擎
17 
18 其餘公用設置項:
19 SESSION_COOKIE_NAME = "sessionid"                       # Session的cookie保存在瀏覽器上時的key,即:sessionid=隨機字符串(默認)
20 SESSION_COOKIE_PATH = "/"                               # Session的cookie保存的路徑(默認)
21 SESSION_COOKIE_DOMAIN = None                             # Session的cookie保存的域名(默認)
22 SESSION_COOKIE_SECURE = False                            # 是否Https傳輸cookie(默認)
23 SESSION_COOKIE_HTTPONLY = True                           # 是否Session的cookie只支持http傳輸(默認)
24 SESSION_COOKIE_AGE = 1209600                             # Session的cookie失效日期(2周)(默認)
25 SESSION_EXPIRE_AT_BROWSER_CLOSE = False                  # 是否關閉瀏覽器使得Session過時(默認)
26 SESSION_SAVE_EVERY_REQUEST = False                       # 是否每次請求都保存Session,默認修改以後才保存(默認)
相關文章
相關標籤/搜索