Flask 学习笔记(七)-会话技术Cookie,Session
cookie
- 客户端会话技术
- 数据都是存储在浏览器中
- 支持过期
- 不能跨域名
- frame 标签
- 可以直接加载整个网站
- 不能跨浏览器
- cookie是通过Response来进行操作
- flask中的cookie可以直接支持中文
- flask对cookie中的内容做了编码
设置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/
点击Login
输入用户名再次访问 http://127.0.0.1:5000/home/
点击Logout即可退出
打开浏览器检查工具也可看到cookie中有user=Sajor;
Session
- session
- 服务端会话技术
- 对数据进行数据安全操作
- 默认在内存中
- 不容易管理
- 容易丢失
- 不能多台电脑协作
- flask-session 默认有效期31天
设置session时使用 Session对象
session['user'] = username
获取session时使用Session对象
session.get('user')
使用时需在manage.py中设置SECRET_KEY
vi manage.py
app.config['SECRET_KEY'] = "Study Flask"
重新访问可以看到cookie变为session
源码地址:https://github.com/565785929/StudyFlask/tree/master/d07