在客戶端存儲信息使用cookie
cookie是由服務器生成术唬,存儲再瀏覽端的一小段文本信息
特點:以鍵值對方式進行存儲
通過瀏覽器訪問一個網(wǎng)站時抑诸,會將瀏覽器存儲的跟網(wǎng)站相關的所有cookie信息發(fā)送給該網(wǎng)站的服務器烂琴,request.COOKIE
cookie是基于域名安全的
def cookie_get(request):
str1 = f'讀取cookie數(shù)據(jù):{request.COOKIES}'
return HttpResponse(str1)
re_path(r'^show6/$', cookie_get),
def cookie_del(request):
_response = HttpResponse('刪除cookie')
_response.delete_cookie('name')
return _response
在服務器存儲信息使用session
是以鍵值對進行存儲的
依賴于cookie,唯一的標識碼保存再sessionid cookie
也是有過期時間的蜕乡,如果不指定奸绷,默認兩周就會過期
- 啟用session中間件,默認是啟用的层玲,不啟用直接刪除即可号醉。項目文件下的settings.py文件中修改
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
# 默認啟用session中間件
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
# 禁止訪問,防止csrf攻擊
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
# 默認注冊好了
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
# 注冊應用到項目中
'test1',
'test2',
]
存儲再數(shù)據(jù)庫中辛块,可以寫畔派,可以不寫,因為是默認方式
SESSION_ENGINE='django.contrib.sessions.backends.db'
存儲再緩存中:存儲再本機內(nèi)存中润绵,如果丟失則不能找回线椰,比數(shù)據(jù)庫的方式讀寫更快
SESSION_ENGINE='django.contrib.sessions.backends.cache'
混合存儲:優(yōu)先從本機內(nèi)存中存取,如果沒有則從數(shù)據(jù)庫中存取
. 遷移生成后會在數(shù)據(jù)庫中創(chuàng)建出存儲session表尘盼,看表中結(jié)構(gòu)憨愉,包含了鍵烦绳,值,過期的時間
session操作(通過HttpResquest對象的session屬性進行會話的讀寫操作)
以鍵值對的格式寫session
request.session['鍵']=值
根據(jù)鍵讀取值
request.session.get('鍵',默認值)
清除所有session,再存儲中刪除值部分
request.session.clear()
清除session數(shù)據(jù)配紫,在存儲中刪除session的整條數(shù)據(jù)
request.session.flush()
刪除session中的指定鍵及值径密,再存儲中只刪除某個鍵及對應的值
del request.session['鍵']
設置會話的超時時間,如果沒有指定過期時間則兩個星期后過期
request.session.set_expiry(value)
如果value是一個整數(shù)躺孝,會話將在value秒沒有活動后過期
如果value為0睹晒,那么用戶會話的session將在用戶的瀏覽器關閉時過期
如果value為None,那么會話永不過期
寫session
def session_set(request):
request.session['class'] = 'web02'
return HttpResponse('把class寫入session中')
re_path(r'^session_set/$', session_set),
讀session
def session_get(request):
res = request.session['class']
return HttpResponse(f'讀取session中的class:{res}')
re_path(r'^session_get/$', session_get),
刪除session
def session_del(request):
del request.session['class']
return HttpResponse('刪除成功')
re_path(r'^session_del/$', session_del),