(一)引入session
Session與Cookie是緊密相關(guān)的。 Session的使用要求用戶瀏覽器必須支持Cookie,如果瀏覽器不支持使用Cookie,或者設置為禁用Cookie,那么將不能使用Session。
Session信息對客戶來說,不同的用戶用不同的Session信息來記錄。當用戶啟用Session時,ASP自動產(chǎn)生一個SessionID.在新會話開始時,服務器將SessionID當做cookie存儲在用戶的瀏覽器中。
session相比較cookie來說比較安全
我的理解:如果你是今天登陸這個網(wǎng)站(前提是你已經(jīng)注冊過這個網(wǎng)站),
然后點擊登陸,登陸成功的話??這行代碼會自動生成一個cookie,并且為你設置一個對應得session.id。此時當你登陸成功的話就有兩個cookie,一個是你自己設置的,一個是系統(tǒng)自動生成的。
當你再次登陸這個網(wǎng)站打開任何一個界面的時候,系統(tǒng)會自動匹配你的sessionid,
注意:自己設置的cookie?健名一定不要和sessionid重名,這樣第二次進入系統(tǒng)的時候,內(nèi)部會匹配不到
(二)代碼
request.session['cueernt']=username ? ? ? ? ? ?-----引入session[健]=需要記錄的內(nèi)容
print('session:%s'%request.session.get('cueernt'))----在同一個app下的其他方法里打入這句話可以獲取用戶名
(三)判斷你的session?id?是否建構(gòu)成功(寫一個判斷)
def?test01(request):
????reet?=?request.session.get('cueernt')
????if?not?reet:
????????return?redirect('/user/login')
return?render(request,?'user/success.html')
(四)引入redis
1.與其他用戶狀態(tài)保存方案比較
一般開發(fā)中用戶狀態(tài)使用session或者cookie,兩種方式各種利弊。
Session:在InProc模式下容易丟失,并且引起并發(fā)問題。如果使用SQLServer或者SQLServer模式又消耗了性能
Cookie則容易將一些用戶信息暴露,加解密同樣也消耗了性能。
Redis采用這樣的方案解決了幾個問題,
1.Redis存取速度快。
2.用戶數(shù)據(jù)不容易丟失。
3.用戶多的情況下容易支持集群。
4.能夠查看在線用戶。
5.能夠?qū)崿F(xiàn)用戶一處登錄。(通過代碼實現(xiàn),后續(xù)介紹)
6.支持持久化。(當然可能沒什么用)
7.相比直接在數(shù)據(jù)庫里尋找session.id要快
自己理解:因為如果這個網(wǎng)站在這一時刻有很大的瀏覽量,每個用戶都有屬于自己的session.id,如果服務器每次都在數(shù)據(jù)庫里面尋找的話會特別慢,所以直接加載到redis里面
(五)安裝redis步驟
設置redis
第一步:安裝pip?install?django-redis-sessions
第二步:配置settings.py文件
#redis緩存session
SESSION_ENGINE?=?'redis_sessions.session'
SESSION_REDIS_HOST?=?'192.168.12.18'------IP地址
SESSION_REDIS_PORT?=?6379
SESSION_REDIS_DB?=?0
SESSION_REDIS_PASSWORD?=?''----設置密碼
SESSION_REDIS_PREFIX?=?'session'
第三步:redis-cli ? ----進入環(huán)境
如果不成功??輸入sudo?apt?install?redis-server
此時sessionID將存儲在redis里面
(六)隔行換色
?{% if forloop.counter|divisibleby:'2'%}style='bakegroud-color:'red';'{%endif%}
能被2整除的都變成紅色(用到了過濾器)