django中設置cookiepython
經過response 對象設置sql
ret= redirect('/index') ret.set_cookie(key,value) #在響應頭中是-- set-cookie:key=value
設置加密cookie數據庫
ret.set_signed_cookie(key,value,salt='加密鹽',...)
參數:django
key, 鍵瀏覽器
value='', 值緩存
max_age=None, 超時時間(默認是None,關閉瀏覽器cookie失效)安全
ret.set_signed_cookie('is_login', '1', 's21',max_age=10000,)
path='/', Cookie生效的路徑,/ 表示根路徑,特殊的:根路徑的cookie能夠被任何url的頁面訪問服務器
domain=None, Cookie生效的域名cookie
secure=False, https傳輸 狀態爲True時,只能http傳輸session
django中獲取cookie
get方法獲取
#獲取未加密cookie request.COOKIES.get('key') #獲取加密cookie is_login = request.get_signed_cookie('is_login', salt='s21', default='')
刪除cookie
def logout(request): ret = redirect("/login/") ret.delete_cookie("user") # 刪除用戶瀏覽器上以前設置的user的cookie值 return rep
session流程分析
具體操做
#設置session,當作字典的鍵值對 request.session[key] = value #獲取session is_login = request.session.get(key) #獲取數據庫中的session_key(瞭解) request.session.session_key # 將全部Session失效日期小於當前日期的數據刪除 request.session.clear_expired() # 檢查會話session的key在數據庫中是否存在 request.session.exists("session_key") # 刪除當前會話的全部Session數據,不會刪除cookie request.session.delete() # 刪除當前的會話數據並刪除會話的Cookie。 request.session.flush() 這用於確保前面的會話數據不能夠再次被用戶的瀏覽器訪問 例如,django.contrib.auth.logout() 函數中就會調用它。 # 設置會話Session和Cookie的超時時間 request.session.set_expiry(value) * 若是value是個整數,session會在些秒數後失效。 * 若是value是個datatime或timedelta,session就會在這個時間後失效。 * 若是value是0,用戶關閉瀏覽器session就會失效。 * 若是value是None,session會依賴全局session失效策略。
django中的session配置(記住最好)
1. 數據庫Session SESSION_ENGINE = 'django.contrib.sessions.backends.db' # 引擎(默認) 2. 緩存Session SESSION_ENGINE = 'django.contrib.sessions.backends.cache' # 引擎 SESSION_CACHE_ALIAS = 'default' # 使用的緩存別名(默認內存緩存,也能夠是memcache),此處別名依賴緩存的設置 3. 文件Session SESSION_ENGINE = 'django.contrib.sessions.backends.file' # 引擎 SESSION_FILE_PATH = None # 緩存文件路徑,若是爲None,則使用tempfile模塊獲取一個臨時地址tempfile.gettempdir() 4. 緩存+數據庫 SESSION_ENGINE = 'django.contrib.sessions.backends.cached_db' # 引擎 5. 加密Cookie Session SESSION_ENGINE = 'django.contrib.sessions.backends.signed_cookies' # 引擎 其餘公用設置項: SESSION_COOKIE_NAME = "sessionid" # Session的cookie保存在瀏覽器上時的key,即:sessionid=隨機字符串(默認) SESSION_COOKIE_PATH = "/" # Session的cookie保存的路徑(默認) SESSION_COOKIE_DOMAIN = None # Session的cookie保存的域名(默認) SESSION_COOKIE_SECURE = False # 是否Https傳輸cookie(默認) SESSION_COOKIE_HTTPONLY = True # 是否Session的cookie只支持http傳輸(默認) SESSION_COOKIE_AGE = 1209600 # Session的cookie失效日期(2周)(默認) SESSION_EXPIRE_AT_BROWSER_CLOSE = False # 是否關閉瀏覽器使得Session過時(默認) SESSION_SAVE_EVERY_REQUEST = False # 是否每次請求都保存Session,默認修改以後才保存(默認)