zoukankan      html  css  js  c++  java
  • 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


  • 相关阅读:
    最大流最小割
    最大权闭合图
    凸包,多边形面积,线段在多边形内的判定。
    模线性方程
    ZOJ Monthly, August 2014
    nenu contest2
    2014 Multi-University Training Contest 10
    Codeforces Round #262 (Div. 2)
    nenu contest
    poj 2299 求逆序数
  • 原文地址:https://www.cnblogs.com/djflask/p/10460177.html
Copyright © 2011-2022 走看看