• Django_cookie_session


    Cookie

    一、Cookie介绍

    Cookie是什么?

    • Cookie是由服务器生成的,存储在浏览器端的少量数据(键值对)
    • 服务器生成Cookie后,会在响应请求时发送Cookie数据给浏览器,浏览器接收到后会自动保存
    • 浏览器再次请求服务器时,会自动上传该服务器生成的所有的Cookie
    • Cookie是有过期时间的,默认关闭浏览器之后Cookie就会过期
    • 每个域名下保存的Cookie的个数是有限制的(50个),不同浏览器保存的个数不一样;
    • 每个Cookie保存的数据大小是有限制的(4K),不同的浏览器保存的数据大小不一样;
    • Cookie是基于域名安全的:
    • Cookie的存储是以域名的方式进行区分的;
    • 每个网站只能读取自己生成的Cookie,而无法读取其它网站生成的Cookie;
    • 浏览器请求某个网站时,会自动携带该网站所有的Cookie数据给服务器,但不会携带其它网站生成的Cookie数据。

    二、Cookie操作:

    在Django中Cookie的读写:

    • 读取数据

    1 request.COOKIES['键名']
    2 或者:
    3 request.COOKIES.get('键名')
    • 保存数据
    1 response.set_cookie('键名', count,max_age, expires)
    • max_age是一个整数,表示在指定秒数后过期
    • expires是一个datetime或timedelta对象,会话将在这个指定的日期/时间过期
    • max_age与expires二选一
    • 如果不指定过期时间,在关闭浏览器时cookie会过期

    Session

    一、Session介绍

    • 一些重要敏感的数据(银行卡账号,余额,验证码...),应该存储在服务器端,而不是存储在浏览器,这种在服务器端进行状态数据保存的方案就是Session
    • Session的使用依赖于Cookie,如果浏览器不能保存Cookie,那么Session则失效了
    • django项目有session模块,默认开启session功能,会自动存储session数据到数据库表中
    • Session也是有过期时间的,如果不指定,默认两周就会过期

    二、Session的使用

    1、开启session功能

    1. 在django项目,session功能默认是开启的;要禁用session功能,则可禁用下图中的session中间件:

    2、session对象操作(request.session字典)

    • 保存session数据(键值对)

    1 request.session['键']=值
    • 读取session数据
    1 request.session.get('键',默认值)
    • 清除session数据数据
    1 request.session.clear()
    2 或者:
    3 request.session.flush()
    • 删除指定的sessoin键值对数据(注意:键不存在会报错KeyError)
    1 del request.session['键']
    • 设置会话的超时时间,如果没有指定过期时间则两个星期后过期
    1 request.session.set_expiry(value)
    • 如果value是一个整数,会话将在value秒没有活动后过期。
    • 如果value为0,那么用户会话的Cookie将在用户的浏览器关闭时过期。
    • 如果value为None,那么会话永不过期。

    三、session存储方式

    Session数据可以存储在数据库、内存、Redis等,可以通过在项目的setting.py中设置SESSION_ENGINE项,指定Session数据存储的方式。

    • 存储在数据库中,如下设置可以写,也可以不写,这是默认存储方式。
    1 SESSION_ENGINE='django.contrib.sessions.backends.db'
    • 存储在内存中:存储在本机内存中,如果丢失则不能找回,比数据库的方式读写更快
    1 SESSION_ENGINE='django.contrib.sessions.backends.cache'
    • 混合存储:优先从本机内存中存取,如果没有则从数据库中存取。
    1 SESSION_ENGINE='django.contrib.sessions.backends.cached_db' 
    • 通过Redis存储session

     

  • 相关阅读:
    HTML <input> 标签
    HTML5 <input> type 属性
    静态页面与动态页面
    string::size_type 页73 size_t 页90
    template method(模板方法)
    C++中创建对象的时候加括号和不加括号的区别(转)
    _declspec(dllexport)和.def(转)
    智能指针
    C++中的delete加深认识
    工厂方法(整理自李建忠<C++设计模式>视频)
  • 原文地址:https://www.cnblogs.com/sun-10387834/p/10560964.html
Copyright © 2020-2023  润新知