djnago seeeion
在用户第一次登陆时去哪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相关推荐
- 都说Djnago框架重,那就让哥用15行代码写个django web程序!
很多初学django的小伙伴都会了解到,django是个大而全的网络框架,本身集成了ORM.模型绑定.模板引擎.缓存.Session等诸多功能.要学这么多内容,要学到猴年马月啊!? 不过世界真是奇妙, ...
- djnago 模型 新建对象id为空
模型: class Picture(models.Model):id = models.Field(auto_created=True, primary_key=True)picture = mode ...
- djnago+vue+element ui前后的分离上传图片并保存
文章目录 准备 一.Vue页面编写 二.django接口编写 1.新建项目 2.引入库 3.写接口 三.结果 最后 准备 python:3.7 django:3.1.2 一.Vue页面编写 我前端的样 ...
- 2021年大数据Flink(三十九):Table与SQL 总结 Flink-SQL常用算子
目录 总结 Flink-SQL常用算子 SELECT WHERE DISTINCT GROUP BY UNION 和 UNION ALL JOI ...
- Flink 基本原理与生产实践分享【入门必读,概念清晰】
Flink 基本原理与生产实践分享[入门必读,概念清晰] https://zh.wikipedia.org/zh-hans/Apache_Flink Apache Flink是由Apache软件基金会 ...
- Flink最锋利的武器:Flink SQL入门和实战 | 附完整实现代码
作者 | 机智的王知无 转载自大数据技术与架构(ID: import_bigdata) 一.Flink SQL 背景 Flink SQL 是 Flink 实时计算为简化计算模型,降低用户使用实时计算门 ...
- python自动点赞_用Python模拟技巧带你实现自动抽屉登录自动点赞
/1 前言/ 嘿,各位小伙伴们晚上好呀,今天小编又给大家带来干货内容啦,今天带来的是,如何自动登录抽屉,并且点赞! 原计划是不打算使用selenium的,但是因为要涉及点赞,所以免不了登录.但事实证明 ...
- Cookie与 Session使用详解
1.Cookie和Session简介与区别 在非常多时候,我们需要跟踪浏览者在整个网站的活动,对他们身份进行自动或半自动的识别(也就是平时常说的网站登陆之类的功能),这时候,我们常采用Cookie与 ...
- Django的是如何工作的
如果你看过我之前所写的关于django的文章的话,你会发现每一篇都具有可操作性,都是从创建项目开始的,虽然中间之加了一些要讲解的重点.这也是我博文的特点,我希望在你看到我这一篇文章的时候是可操作的,不 ...
最新文章
- Liunx 查看硬件信息
- 无任何网络提供程序接受指定的网络路径 or No network provider accepted the given network path 的解决方法...
- 排序代码(python,c++) 及 基本算法复杂度
- 首批共享单车死于 2019
- 山西台达plc可编程控制器_(PLC)可编程控制器的编程语言你了解吗?不妨看看...
- LINUX doubango编译详细过程记录
- python3之urllib代理池
- E4A直播盒子APP源码搭建教程之——APP源码篇
- excel更新计算机,2007版Excel升级新版本的方法步骤
- Python爬取北京市所有电子眼名,再也不怕被隐藏摄像头偷拍
- PostGIS 报错libcrypto
- Linux 系统中如何恢复已删除的文件?
- 新浪开发者平台 android 签名,新浪微博接入流程
- iMeta观点 | 短读长扩增子测序是否适用于微生物组功能的预测?
- 锁定计算机后忘记密码怎么解开,win10开机密码忘记了怎么办?win10电脑忘记开机密码的解锁方法...
- Google Chrome企业咨询服务市场调研报告- 行业发展机遇、市场定位及主要驱动因素
- 计算机比赛小组名称和口号,取个小组队名和口号
- c语言中的下标变量是什么,c语言引用数组元素时其数组下标的允许的数据类型是什么...
- JS 数组,对象。中划线、数字属性时值获取
- 机器学习之K近邻(KNN)模型