在用户第一次登陆时去哪session_key会None

user.session_key = request.session.session_key
user.save()
使用create()来代贴save()原因:

如果request.session.session_key为None,则表示会话对象是全新的,尚未保存到数据库中。调用request.session.save()应该填充该属性。

SessionStore.create()用于创建新会话(即未从会话存储加载的会话session_key=None)。

save()用于保存现有会话(即从会话存储加载的会话)。

调用save()新会话也可能有效,但产生session_key与现有会话冲突的可能性很小。create() 调用save()和循环,直到session_key生成未使用的。
改为

if not request.session.session_key:request.session.save()
user.session_key = request.session.session_key
user.save()

这个功能是为了 使用session 实现单用户登录功能。通俗的说就是新用户挤掉老用户。需要一个状态记录用户。其他方法大部分需要前端手写功能携带一些数据。使用session就方便一些。

思路:

在用户表后加一个字段(session_key)记录用户状态。
当新用户登录时 会更新字段数据 , 拿着老的session_key去django_session表删除旧session 老用户的session 就从服务器删掉了。当校验session身份时就会拦截到。

is_session_key = user.session_key  # 获取登录对象的session_key
if is_session_key:  # 用户已登录request.session.delete(is_session_key)  # 删除登录前面登录用户的session_key
request.session["uid"] = user.id
request.session['identity'] = user.identity
if not request.session.session_key:request.session.save()
user.session_key = request.session.session_key
user.save()

session认证装饰器

def auth(func):def wrap(request, *args, **kwargs):# 如果未登陆,跳转到指定页面ck = request.session.get("uid", None)if not ck:return JsonResponse({"code": 300, "msg": "登录已过期", "data": {}})return func(request, *args, **kwargs)return wrap

djnago seeeion相关推荐

  1. 都说Djnago框架重,那就让哥用15行代码写个django web程序!

    很多初学django的小伙伴都会了解到,django是个大而全的网络框架,本身集成了ORM.模型绑定.模板引擎.缓存.Session等诸多功能.要学这么多内容,要学到猴年马月啊!? 不过世界真是奇妙, ...

  2. djnago 模型 新建对象id为空

    模型: class Picture(models.Model):id = models.Field(auto_created=True, primary_key=True)picture = mode ...

  3. djnago+vue+element ui前后的分离上传图片并保存

    文章目录 准备 一.Vue页面编写 二.django接口编写 1.新建项目 2.引入库 3.写接口 三.结果 最后 准备 python:3.7 django:3.1.2 一.Vue页面编写 我前端的样 ...

  4. 2021年大数据Flink(三十九):​​​​​​​Table与SQL ​​​​​​总结 Flink-SQL常用算子

    目录 总结 Flink-SQL常用算子 SELECT WHERE ​​​​​​​DISTINCT ​​​​​​​GROUP BY ​​​​​​​UNION 和 UNION ALL ​​​​​​​JOI ...

  5. Flink 基本原理与生产实践分享【入门必读,概念清晰】

    Flink 基本原理与生产实践分享[入门必读,概念清晰] https://zh.wikipedia.org/zh-hans/Apache_Flink Apache Flink是由Apache软件基金会 ...

  6. Flink最锋利的武器:Flink SQL入门和实战 | 附完整实现代码

    作者 | 机智的王知无 转载自大数据技术与架构(ID: import_bigdata) 一.Flink SQL 背景 Flink SQL 是 Flink 实时计算为简化计算模型,降低用户使用实时计算门 ...

  7. python自动点赞_用Python模拟技巧带你实现自动抽屉登录自动点赞

    /1 前言/ 嘿,各位小伙伴们晚上好呀,今天小编又给大家带来干货内容啦,今天带来的是,如何自动登录抽屉,并且点赞! 原计划是不打算使用selenium的,但是因为要涉及点赞,所以免不了登录.但事实证明 ...

  8. Cookie与 Session使用详解

    1.Cookie和Session简介与区别 在非常多时候,我们需要跟踪浏览者在整个网站的活动,对他们身份进行自动或半自动的识别(也就是平时常说的网站登陆之类的功能),这时候,我们常采用Cookie与 ...

  9. Django的是如何工作的

    如果你看过我之前所写的关于django的文章的话,你会发现每一篇都具有可操作性,都是从创建项目开始的,虽然中间之加了一些要讲解的重点.这也是我博文的特点,我希望在你看到我这一篇文章的时候是可操作的,不 ...

最新文章

  1. Liunx 查看硬件信息
  2. 无任何网络提供程序接受指定的网络路径 or No network provider accepted the given network path 的解决方法...
  3. 排序代码(python,c++) 及 基本算法复杂度
  4. 首批共享单车死于 2019
  5. 山西台达plc可编程控制器_(PLC)可编程控制器的编程语言你了解吗?不妨看看...
  6. LINUX doubango编译详细过程记录
  7. python3之urllib代理池
  8. E4A直播盒子APP源码搭建教程之——APP源码篇
  9. excel更新计算机,2007版Excel升级新版本的方法步骤
  10. Python爬取北京市所有电子眼名,再也不怕被隐藏摄像头偷拍
  11. PostGIS 报错libcrypto
  12. Linux 系统中如何恢复已删除的文件?
  13. 新浪开发者平台 android 签名,新浪微博接入流程
  14. iMeta观点 | 短读长扩增子测序是否适用于微生物组功能的预测?
  15. 锁定计算机后忘记密码怎么解开,win10开机密码忘记了怎么办?win10电脑忘记开机密码的解锁方法...
  16. Google Chrome企业咨询服务市场调研报告- 行业发展机遇、市场定位及主要驱动因素
  17. 计算机比赛小组名称和口号,取个小组队名和口号
  18. c语言中的下标变量是什么,c语言引用数组元素时其数组下标的允许的数据类型是什么...
  19. JS 数组,对象。中划线、数字属性时值获取
  20. 机器学习之K近邻(KNN)模型

热门文章

  1. 陈序猿,你敢创业吗?怎么才算成功?
  2. 在mount里看到哪个设备文件的一些笔记
  3. 什么叫企业级即时通讯软件
  4. 经典面试题(25):以下代码将输出的结果是什么?
  5. php编程模式,PHP编程之-设计模式简单实例
  6. 并发、并行、线程、进程与CPU基本概念
  7. 你的导师是哪种类型?
  8. 文章用图的修改和排版 (一)
  9. 泰勒级数 快速傅里叶变换(Fast Fourier Transfor FFT)
  10. 1.4编程基础之逻辑表达式与条件分支 05 整数大小比较