Flask学习——cookie操作
Cookie是客户端的会话技术
cookie本身由浏览器保存,通过Response将cookie写到浏览器上,下一次访问,浏览器会根据不同的规则携带cookie过来
特点:
- 客户端会话技术,浏览器的会话技术
- 数据全都是存储在客户端中
- 存储使用的键值对结构进行的存储
- 特性
- 支持过期时间
- 默认会自动携带本网站的所有cookie
- 根据域名进行cookie存储
- 不能跨域名
- 不能跨浏览器
- Cookie是通过服务器创建的Response来创建的
设置cookie:
response.set_cookie(key,value[,max_age=None,exprise=None)]
response.set_cookie(key,value[,max_age=None,exprise=None)]
max_age: 整数,指定cookie过期时间
expries: 整数,指定过期时间,可以指定一个具体日期时间
max_age和expries两个选一个指定
获取cookie:
request.cookies.get(key)
删除cookie
response.delete_cookie(key)
例子:用cookie实现登陆和注销
登录页前端:
<h3>首页</h3> <a href="{{ url_for('app.login') }}">登录</a> # url_for('蓝图名.函数名')
<form action="{{ url_for('app.handler') }}" methon="GET"> 用户名:<input type="text" name="username" ><br> 密码:<input type="password" name="password" ><br> <input type="submit" value="登录"><br> </form>
后端接收,并用response设置cookie返回给浏览器:
@blue.route('/login_handler') def login_handler(): if request.method == 'GET': username = request.args.get('username') password = request.args.get('password') if username == 'lili' and password == 123456: response = redirect(url_for('app.index'))
# 这里设置一下cookie response.set_cookie('user',username,max_age=7*24*3600) return response else: return '登录失败'
登录后,cookie检测:
@blue.route('/index/') def index(): #渲染不到可以给个空值. username = request.cookie.get('user','') #渲染到前端 return render_template('index.html', username=username)
前端接收参数并渲染:
<h3>首页</h3> {% if username %} <p>{{ username }}:欢迎您<a href="">注销</a></p> {% else %} <a href="{{ url_for('app.login') }}">登录</a> {% endif %}
注销相关蓝图,cookie删除:
@blue.route('/logout/') def logout(): response = redirect(url_for('app.index')) #通过response删除cookie里的'user' response.delete_cookie('user') return response