zoukankan      html  css  js  c++  java
  • Django--session(登录用)

    一、session的原理图

    二、Django中session对象的设置/读取/删除及其他方法

    三. Django--配置 settings.py中与session有关的参数

    一、session的原理图

    session是保存在服务器的key-value。用session_id标识这个key-value对象,把session_id设置为cookie返给浏览器

    下一次浏览器就拿着cookie里的{session_id:'xxxxxx'}在服务器找上一次存的session_id对应的key-value对象

    存session:request.session["username"]="yuan"经历了三步:

    1、生成随机字符串 12323dsafasasfa
    2、response.set_cookie("session_id","12323dsafasasfa")
    3、在django-session表中创建一条记录:
    session-key                         session-data
    12323dsafasasfa    {'is_login':True,'username':'yuan'}

    取session:request.session["username"]经历了三步:

    1、request.COOKIES.get("session_id") #12323dsafasasfa
    2、obj=django-session.objects.filter(session_id="12323dsafasasfa")
    3、obj.session-data.get("username")

    session的更新规则

    如果同一个浏览器先登录张三,再登录李四,这时候不会新创建session_id,而是更新张三的session_id对应的session_data

    if  has(session_id):

      更新这个session_id对应的session_data

    else:

      Django-session新增一条记录

    总结:服务器的Django-session的一条记录,对应一台电脑的一种浏览器

    二、Django中session对象的设置/读取/删除及其他方法

    1、设置Sessions中的k-v
    request.session['session_name'] =对象(存放的时候json序列化,对象可以是列表或字典)
    2、读取Sessions中的k
    session_name = request.session["session_name"]
    fav_color = request.session.get('fav_color', 'red')    #get(key, default=None);
    3、删除Sessions中的k-v
    del request.session["session_name"]
    fav_color = request.session.pop('fav_color')     #pop(key)
    4、删除session对象flush()
    request.session.flush()
    删除当前的会话数据并删除会话的Cookie。做注销用
    这用于确保前面的会话数据不可以再次被用户的浏览器访问
    5、keys()   #获取所有key
    6、items()  #获取所有k-v
    7、setdefault()  #?
    8 request.session.session_key  # 用户session的随机字符串
    示例1:
    # 将所有Session失效日期小于当前日期的数据删除
    request.session.clear_expired()
    示例二:
    # 检查 用户session的随机字符串 在数据库中是否
    request.session.exists("session_key")
    示例三:
    # 删除当前用户的所有Session数据
    request.session.delete("session_key")

    request.session.set_expiry(value)
    * 如果value是个整数,session会在些秒数后失效。
    * 如果value是个datatime或timedelta,session就会在这个时间后失效。
    * 如果value是0,用户关闭浏览器session就会失效。
    * 如果value是None,session会依赖全局session失效策略。

    三. Django--配置 settings.py中与session有关的参数

    SESSION_ENGINE = 'django.contrib.sessions.backends.db' # 引擎(默认)

    SESSION_COOKIE_NAME = "sessionid"    # Session的cookie保存在浏览器上时的key,即:sessionid=随机字符串(默认)
    SESSION_COOKIE_PATH = "/"         # Session的cookie保存的路径(默认)
    SESSION_COOKIE_DOMAIN = None     # Session的cookie保存的域名(默认)
    SESSION_COOKIE_SECURE = False    # 是否Https传输cookie(默认)
    SESSION_COOKIE_HTTPONLY = True    # 是否Session的cookie只支持http传输(默认)
    SESSION_COOKIE_AGE = 1209600       # Session的cookie失效日期单位是秒(默认2周)
    SESSION_EXPIRE_AT_BROWSER_CLOSE = False         # 是否关闭浏览器使得Session过期,关闭浏览器要重新登录(默认)
    SESSION_SAVE_EVERY_REQUEST = False     # 是否每次请求都保存Session,每天访问session过期时间推迟。默认修改之后才保存(默认)
                            # 如果为False,设置10秒,10秒内不管访问多少次都是10s后过期 如果为True,是从最后一次不访问开始计时

    用户注销:

    def logout(request):

      auth.logout(request)

      return redirect("/login/")

  • 相关阅读:
    Thinkphp3.2.3路径书写注意
    Thinkphp3.2.3使用Ajax一定注意 数据返回
    jquery return false();
    jQuery中设置form表单中action的值的方法
    jQuery的加法运算.
    jQuery 利用 parent() parents() 寻找父级 或祖宗元素
    jQuery 使得文本框获得焦点
    PHP操作字符串 截取指定长度字符 移除字符串两侧 左侧 右侧指定字符 或空白字符 替换字符
    input type=file 图片上传相关
    mysql like 贪婪匹配 同时匹配多个值
  • 原文地址:https://www.cnblogs.com/staff/p/10736752.html
Copyright © 2011-2022 走看看