Flask 学习笔记(七)-会话技术Cookie,Session

cookie

  • 客户端会话技术
  • 数据都是存储在浏览器中
  • 支持过期
  • 不能跨域名
    • frame 标签
    • 可以直接加载整个网站
  • 不能跨浏览器
  • cookie是通过Response来进行操作
  • flask中的cookie可以直接支持中文
    • flask对cookie中的内容做了编码

Flask 学习笔记(七)-会话技术Cookie,Session

设置cookie时使用 Response对象

resp.set_cookie('key', value)

获取cookie时使用Request对象

request.cookies.get('key')

vi App/views.py

@blue.route('/home/')
def home():
    username = request.cookies.get("user")
    return render_template('home.html', username=username)

@blue.route('/login/', methods=["GET", "POST"])
def login():
    if request.method == "GET":
        return render_template('login.html')
    elif request.method == "POST":
        username = request.form.get("username")
        resp = Response(response="Login Success: %s" % username)
        resp.set_cookie('user', username)
        return resp


@blue.route('/logout/')
def logout():
    resp = redirect(url_for('first_blue.home'))
    resp.delete_cookie('user')
    return resp

访问:http://127.0.0.1:5000/home/
Flask 学习笔记(七)-会话技术Cookie,Session
点击Login
Flask 学习笔记(七)-会话技术Cookie,Session
输入用户名再次访问 http://127.0.0.1:5000/home/

Flask 学习笔记(七)-会话技术Cookie,Session

点击Logout即可退出
打开浏览器检查工具也可看到cookie中有user=Sajor;
Flask 学习笔记(七)-会话技术Cookie,Session


Session

  • session
    • 服务端会话技术
    • 对数据进行数据安全操作
    • 默认在内存中
      • 不容易管理
      • 容易丢失
      • 不能多台电脑协作
    • flask-session 默认有效期31天
      设置session时使用 Session对象
session['user'] = username

获取session时使用Session对象

session.get('user')

Flask 学习笔记(七)-会话技术Cookie,Session
使用时需在manage.py中设置SECRET_KEY
vi manage.py

app.config['SECRET_KEY'] = "Study Flask"

重新访问可以看到cookie变为session

Flask 学习笔记(七)-会话技术Cookie,Session

源码地址:https://github.com/565785929/StudyFlask/tree/master/d07