一、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'] ="admin"
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/")

Django--session(登录用)的更多相关文章

  1. django session

    上周一个新的应用场景,带出来了关于django session管理的问题. 公司的另一个App以Widget的形式嵌入我们的页面,就是我们提供一些url,另一个App通过iframe的形式嵌入这些ur ...

  2. Django session 源码流程

    流程 Django session源码流程 首先执行的是SessionMiddleware的init方法 import_module(settings.SESSION_ENGINE) 导入了一个 dj ...

  3. django session 的简单操作

    #!SESSION_SAVE_EVERY_REQUEST = True 设置根据最后一次操作设置登录超时时间#!SESSION_EXPIRE_AT_BROWSER_CLOSE = True 设置是否关 ...

  4. Django - session 会话跟踪技术

    1.session简介 |session 英 /'seʃ(ə)n/ 美 /'sɛʃən/ 基于cookies开发,将值存到服务端 写session 读session Session是服务器端技术,利用 ...

  5. django session 使用案例

    django session 使用案例 HTTP被设计为”无状态”,每次请求都处于相同的空间中. 在一次请求和下一次请求之间没有任何状态保持,我们无法根据请求的任何方面(IP地址,用户代理等)来识别来 ...

  6. Django 2.0 学习(21):Django Session

    Django Session Session 与Cookie 1.简介 1.Cookie不属于http协议范围,由于http协议无法保持状态,但实际情况,我们又需要"保持状态",因 ...

  7. 关于Django的登录系统

    首先需要明确的是登录的本质:登录就是服务器确认当前用户的身份,并将数据库中的记录提取匹配 默认的登录系统是用户名密码方式,这种方式很平常,也没什么特别的.这里主要说的是第三方验证登录 通常第三方验证登 ...

  8. Redis+Django(Session,Cookie)的用户系统

    一.Django authentication django authentication提供了一个便利的user api接口,无论在py中 request.user,参见Request and re ...

  9. Redis+Django(Session,Cookie、Cache)的用户系统

    转自 http://www.cnblogs.com/BeginMan/p/3890761.html 一.Django authentication django authentication 提供了一 ...

  10. Django session相关操作

    Django session 是存储在数据库中的所以要先跟数据库建立连接 本连接有Django跟数据库建立连接的操作:https://www.cnblogs.com/Niuxingyu/p/10296 ...

随机推荐

  1. java代码之美(6)---guava之multimap

    guava之multimap 上一篇讲到Multiset它可以对存入相同元素做一个计数的功能,那multimap呢? 一.概述 1.基本介绍和案例说明 multimap和MultiSet的继承结果很相 ...

  2. MVC中的下载文件及上传

    前言:最近做的项目中用到了文件下载与上传,一下子想不起来,只能进行百度,为了方便自己做了一个小demo,特此写了这篇小笔记 1.页面方面: 2.控制器方面 namespace MvcUpload.Co ...

  3. 华为oj之求int型正整数在内存中存储时1的个数

    题目: 求int型正整数在内存中存储时1的个数 热度指数:4427 时间限制:1秒 空间限制:32768K 题目描述 输入一个int型的正整数,计算出该int型数据在内存中存储时1的个数. 输入描述: ...

  4. Android 开发工具类 19_NetworkStateReceiver

    检测网络状态改变类: 1.注册网络状态广播: 2.检查网络状态: 3.注销网络状态广播: 4.获取当前网络状态,true为网络连接成功,否则网络连接失败: 5.注册网络连接观察者: 6.注销网络连接观 ...

  5. 带着新人学springboot的应用11(springboot+Dubbo+Zookeeper 上)

    这次说个在大型项目比较常见的东西,就是分布式,分布式到底是个什么东西呢?概念太大,不好说,就像刚学javaee的人问你,什么是web啊,什么是spring啊等等,你可能觉得,这个东西我好像知道,但是用 ...

  6. 设计模式总结篇系列:工厂方法模式(Factory Method)

    工厂方法模式适合于对实现了同一接口或继承了同一父类的一些类进行实例的创建.一般是通过定义一个工厂类,并在其方法中实现对具有上述特点的类对象的创建. 根据具体产生类对象的方法定义形式,又可以将其分为普通 ...

  7. 使用MaxCompute Java SDK 执行任务卡住了,怎么办?

    场景一 用户AA: “亲,用 MaxCompute Java SDK 跑作业,为什么卡住不动了?”me: “有 Logview 吗?发来看下”A: “没有,我用的是SDK,没Logview” 场景二 ...

  8. vue 双向数据绑定原理

    博客地址: https://ainyi.com/8 采用defineProperty的两个方法get.set 示例 <!-- 表单 --> <input type="tex ...

  9. .Net语言 APP开发平台——Smobiler学习日志:在应用中添加WeiXin组件

    最前面的话:Smobiler是一个在VS环境中使用.Net语言来开发APP的开发平台,也许比Xamarin更方便 控件说明 WeiXin组件. 效果演示 1. 分享好友 2. 分享朋友圈 图1 图2 ...

  10. Java 由浅入深GUI编程实战练习(一)

    项目简介: 1.实现利用下拉菜单的方式选择发送快捷语句: 2.实现对留言信息内容的置顶处理以及至尾处理: 3.实现清屏处理或现实保留部分留言内容: 运行界面: 代码展示: import java.aw ...