Flask中的session操作
https://www.cnblogs.com/notzy/p/9187304.html?
一、配置SECRET_KEY
因?yàn)閒lask的session是通過加密之后放到了cookie中。所以有加密就有密鑰用于解密,所以,只要用到了flask的session模塊就一定要配置“SECRET_KEY”這個(gè)全局宏。一般設(shè)置為24位的字符。配置方法一般有兩種。
配置方法一:
新建一個(gè)config.py的文件配置secret_key?
config.py
?
然后在主運(yùn)行文件里面添加config文件里面的內(nèi)容。?
main.py
?
配置方法二:
直接在主運(yùn)行文件里面配置。配置config的時(shí)候也是和操作字典是一樣的?
main.py
?
產(chǎn)生方法
?可以引入OS模塊中的產(chǎn)生一個(gè)24位的隨機(jī)字符串的函數(shù),這種方法有個(gè)缺點(diǎn),就是服務(wù)器每次啟動(dòng)之后這個(gè)SECRET_KEY的值都會(huì)變。具體自己體會(huì)!
1 import os 2 3 app.config['SECRET_KEY'] = os.urandom(24) # 隨機(jī)產(chǎn)生24位的字符串作為SECRET_KEY?
二、操作session –操作session就如同操作字典!
1.設(shè)置session
1 from flask import Flask,session2 import os3 4 app = Flask(__name__)5 app.config['SECRET_KEY'] = os.urandom(24)6 7 # 設(shè)置session8 @app.route('/')9 def set(): 10 session['username'] = 'liefyuan' # 設(shè)置“字典”鍵值對(duì) 11 return 'success' 12 13 if __name__ == '__main__': 14 app.run()?
2.讀取session
?因?yàn)閟ession就像字典一樣所以,操作它的時(shí)候有兩種方法:
- (1)result = session[‘key’] :如果內(nèi)容不存在,將會(huì)報(bào)異常
- (2)result = session.get(‘key’) :如果內(nèi)容不存在,將返回None
所以,使用第二種方法獲取session較好。
1 from flask import Flask,session2 import os3 4 app = Flask(__name__)5 app.config['SECRET_KEY'] = os.urandom(24)6 7 # 設(shè)置session8 @app.route('/')9 def set(): 10 session['username'] = 'liefyuan' # 設(shè)置“字典”鍵值對(duì) 11 return 'success' 12 13 # 讀取session 14 @app.route('/get') 15 def get(): 16 # session['username'] 17 # session.get('username') 18 return session.get('username') 19 20 if __name__ == '__main__': 21 app.run()?
3.刪除session
1 #encoding: utf-82 3 from flask import Flask,session4 import os5 6 app = Flask(__name__)7 app.config['SECRET_KEY'] = os.urandom(24)8 9 10 # 設(shè)置session 11 @app.route('/') 12 def set(): 13 session['username'] = 'liefyuan' 14 return 'success' 15 16 17 # 讀取session 18 @app.route('/get/') 19 def get(): 20 # session['username'] 21 # session.get('username') 22 return session.get('username') 23 24 25 # 刪除session 26 @app.route('/delete/') 27 def delete(): 28 print session.get('username') 29 session.pop('username') 30 print session.get('username') 31 return 'success' 32 33 34 if __name__ == '__main__': 35 app.run()?
4.清除session中所有數(shù)據(jù)
1 #encoding: utf-82 3 from flask import Flask,session4 import os5 6 app = Flask(__name__)7 app.config['SECRET_KEY'] = os.urandom(24)8 9 10 # 設(shè)置session 11 @app.route('/') 12 def set(): 13 session['username'] = 'liefyuan' 14 return 'success' 15 16 17 # 讀取session 18 @app.route('/get') 19 def get(): 20 # session['username'] 21 # session.get('username') 22 return session.get('username') 23 24 25 # 刪除session 26 @app.route('/delete') 27 def delete(): 28 print session.get('username') 29 session.pop('username') 30 print session.get('username') 31 return 'success' 32 33 34 # 清除session中所有數(shù)據(jù) 35 @app.route('/clear') 36 def clear(): 37 print session.get('username') 38 # 清除session中所有數(shù)據(jù) 39 session.clear 40 print session.get('username') 41 return 'success' 42 43 if __name__ == '__main__': 44 app.run()?
三、設(shè)置session的過期時(shí)間
?如果沒有指定session的過期時(shí)間,那么默認(rèn)是瀏覽器關(guān)閉后就自動(dòng)結(jié)束。session.permanent = True在flask下則可以將有效期延長(zhǎng)至一個(gè)月。下面有方法可以配置具體多少天的有效期。
- 如果沒有指定session的過期時(shí)間,那么默認(rèn)是瀏覽器關(guān)閉后就自動(dòng)結(jié)束
- 如果設(shè)置了session的permanent屬性為True,那么過期時(shí)間是31天。
- 可以通過給app.config設(shè)置PERMANENT_SESSION_LIFETIME來更改過期時(shí)間,這個(gè)值的數(shù)據(jù)類型是datetime.timedelay類型。
使用的需求:
- 1.在登錄網(wǎng)頁(yè)界面,下面有一個(gè)“記住我”選項(xiàng),如果點(diǎn)擊了則設(shè)置session的有效期長(zhǎng)一點(diǎn)。就是設(shè)置這個(gè)!
?
一種更先進(jìn)的配置有效期的方法:(比如配置7天有效)
- 1.引入包:from datetime import timedelta
- 2.配置有效期限:app.config['PERMANENT_SESSION_LIFETIME'] = timedelta(days=7) # 配置7天有效
- 3.設(shè)置:session.permanent = True
?
總結(jié)
以上是生活随笔為你收集整理的Flask中的session操作的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 室外AIS天线AV400
- 下一篇: linux红帽认证考试费,红帽rhce认