zoukankan      html  css  js  c++  java
  • Flask中的session操作

    一、配置SECRET_KEY

    因为flask的session是通过加密之后放到了cookie中。所以有加密就有密钥用于解密,所以,只要用到了flask的session模块就一定要配置“SECRET_KEY”这个全局宏。一般设置为24位的字符。配置方法一般有两种。

    配置方法一:

    新建一个config.py的文件配置secret_key 
    config.py

     1 SECRET_KEY = 'XXXXXXXXX' 

    然后在主运行文件里面添加config文件里面的内容。 
    main.py

    复制代码
    1 # encoding: utf-8
    2 
    3 from flask import Flask,session
    4 import config
    5 
    6 app = Flask(__name__)
    复制代码

    配置方法二:

    直接在主运行文件里面配置。配置config的时候也是和操作字典是一样的 
    main.py

    复制代码
    1 # encoding: utf-8
    2 
    3 from flask import Flask,session
    4 
    5 app = Flask(__name__)
    6 app.config['SECRET_KEY'] = 'XXXXX'
    复制代码

    产生方法

     可以引入OS模块中的产生一个24位的随机字符串的函数,这种方法有个缺点,就是服务器每次启动之后这个SECRET_KEY的值都会变。具体自己体会!

    1 import os
    2 
    3 app.config['SECRET_KEY'] = os.urandom(24) # 随机产生24位的字符串作为SECRET_KEY

    二、操作session –操作session就如同操作字典!

    1.设置session

    复制代码
     1 from flask import Flask,session
     2 import os
     3 
     4 app = Flask(__name__)
     5 app.config['SECRET_KEY'] = os.urandom(24)
     6 
     7 # 设置session
     8 @app.route('/')
     9 def set():
    10     session['username'] = 'liefyuan' # 设置“字典”键值对
    11     return 'success'
    12 
    13 if __name__ == '__main__':
    14     app.run()
    复制代码

    2.读取session

     因为session就像字典一样所以,操作它的时候有两种方法:

    • (1)result = session[‘key’] :如果内容不存在,将会报异常
    • (2)result = session.get(‘key’) :如果内容不存在,将返回None

    所以,使用第二种方法获取session较好。

    复制代码
     1 from flask import Flask,session
     2 import os
     3 
     4 app = Flask(__name__)
     5 app.config['SECRET_KEY'] = os.urandom(24)
     6 
     7 # 设置session
     8 @app.route('/')
     9 def set():
    10     session['username'] = 'liefyuan' # 设置“字典”键值对
    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-8
     2 
     3 from flask import Flask,session
     4 import os
     5 
     6 app = Flask(__name__)
     7 app.config['SECRET_KEY'] = os.urandom(24)
     8 
     9 
    10 # 设置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中所有数据

    复制代码
     1 #encoding: utf-8
     2 
     3 from flask import Flask,session
     4 import os
     5 
     6 app = Flask(__name__)
     7 app.config['SECRET_KEY'] = os.urandom(24)
     8 
     9 
    10 # 设置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中所有数据
    35 @app.route('/clear')
    36 def clear():
    37     print session.get('username')
    38     # 清除session中所有数据
    39     session.clear
    40     print session.get('username')
    41     return 'success'
    42 
    43 if __name__ == '__main__':
    44     app.run()
    复制代码

    三、设置session的过期时间

     如果没有指定session的过期时间,那么默认是浏览器关闭后就自动结束。session.permanent = True在flask下则可以将有效期延长至一个月。下面有方法可以配置具体多少天的有效期。

    • 如果没有指定session的过期时间,那么默认是浏览器关闭后就自动结束
    • 如果设置了session的permanent属性为True,那么过期时间是31天。
    • 可以通过给app.config设置PERMANENT_SESSION_LIFETIME来更改过期时间,这个值的数据类型是datetime.timedelay类型。

    使用的需求:

    • 1.在登录网页界面,下面有一个“记住我”选项,如果点击了则设置session的有效期长一点。就是设置这个!
    复制代码
    1 # 设置session
    2 @app.route('/')
    3 def set():
    4     session['username'] = 'liefyuan'
    5     session.permanent = True # 长期有效,一个月的时间有效
    6     return 'success'
    复制代码

    一种更先进的配置有效期的方法:(比如配置7天有效)

    • 1.引入包:from datetime import timedelta
    • 2.配置有效期限:app.config['PERMANENT_SESSION_LIFETIME'] = timedelta(days=7) # 配置7天有效
    • 3.设置:session.permanent = True
    复制代码
     1 #encoding: utf-8
     2 
     3 from flask import Flask,session
     4 from datetime import timedelta
     5 import os
     6 
     7 app = Flask(__name__)
     8 app.config['SECRET_KEY'] = os.urandom(24)
     9 app.config['PERMANENT_SESSION_LIFETIME'] = timedelta(days=7) # 配置7天有效
    10 
    11 
    12 # 设置session
    13 @app.route('/')
    14 def set():
    15     session['username'] = 'liefyuan'
    16     session.permanent = True
    17     return 'success'
    复制代码
     
     
     
    好文要顶 关注我 收藏该文  
  • 相关阅读:
    sql server 修改/查看 主键初始值
    国内外邮箱正则验证及js示例
    修改表中主键 标识/初始值
    主角场景Shader效果:遮挡透明
    主角场景效果:人物阴影
    主角场景Shader效果:描边
    主角场景Shader效果:光影
    Unity ZTest深度测试 & ZWrite深度写入
    天气系统:雨、雪
    UnityShader 序列帧动画效果
  • 原文地址:https://www.cnblogs.com/hedianzhan/p/9646691.html
Copyright © 2011-2022 走看看