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

 



posted @ 2019-03-02 11:01  gavincc  阅读(3067)  评论(0编辑  收藏  举报