一、会话跟踪

  1. 我们先需要了解是什么是会话!可以把会话理解为客户端与服务器之间的一次会话,在一次会话中可能会包含多次请求和响应,例如你给10086打个电话,你就是客户端,而10086服务人员就是服务器,从双方接通电话的那一刻起,会话就开始了,到某一方挂断电话表示会话结束。在通话过程中,你会向10086发送多个请求,那么这多个请求都会在一个会话中。客户向某一服务器发送出第一个请求开始,会话就开始了,直到客户关闭了浏览器会话结束。

  2. 在一次绘画的多次请求中数据共享,这就是会话跟踪计数

二、cookie

  1. 什么是cookie

    1. 首先来讲,cookie是浏览器技术,cookie具体指的是一段小信息,它是服务器发送出来存储在浏览器上的一组组键值对,可以理解为服务端给客户端的一个小甜点,下次访问服务器时会自动携带这些键值对,以便服务器提取有用信息。

  2. cookie的原理

    1. cookie的工作原理是:浏览器访问服务端,带着一个空的cookie,然后由服务器产生内容,浏览器收到响应后保存在本地;当浏览器再次访问时,浏览器会自动带上cookie,这样服务器就能通过cookie的内容来判断这个是谁了。

  3. cookie与HTTP头

    1. cookie是通过HTTP请求和响应头在客户端和服务器端传递的

    2. cookie:请求头,客户端发送给服务器端

    3. 格式:cookie:a=A;b=B。既多个cookie用分号隔开

    4. set-cookie:响应头,服务器端发送给客户端;

  4. cookie的覆盖

    1. 如果服务器端发送重复的cookie那么会覆盖原有的cookie,例如客户端的第一个请求服务器端发送的cookie是set-cookie:a=A;第二个请求服务器端发送的是:set-cookie:a=AA,那么客户端只留下一个cookie,即:a=AA

三、django中操作cookie

  1. Ctrl + Shift + del三个键来清除页面缓存和cookie,将来这个操作你会用的很多。

  2. 获取cookie

    1. request.COOKIES['key']
      request.get_signed_cookie(key, default=RAISE_ERROR, salt='', max_age=Non
      default:默认值
      salt:加密盐
      max_age:后台控制过期时间
  3. 设置cookie

    rep = Httpresponse(...)
    rep = render(request,''') rep.set_cookie(key,value,...)
    rep.set_signed_cookie(key,value,salt='加密盐',max_age=None,...)

    参数

    1. key:键

    2. value:值

    3. max_age=None,超时时间

    4. expires=None,超时时间

    5. path='/',cookie生效的域名

    6. secure=False,https传输

    7. httponly=False 只能http协议传输,无法被Javascript获取

    
    
  4. 删除cookie

    1.   

      def login(request):
      rep = redrect("/login/")
      rep.delete_cookie("user") #删除用户浏览器上之前设置的usercookie值
      return rep

四、session

 Session是服务器端技术,利用这个技术,服务器在运行时可以为每一个用户的浏览器创建一个独立的session对象,由于session为用户浏览器独享,所以用户在访问浏览器的web资源时,可以把各自的数据放在各自的session中,当用户再去访问该服务器中的其他web资源时,其他web资源再从用户各自的session中取出数据为用户服务

五、django中操作session  

  1.获取值

request.session['k1']

request.session.get('k1',none)
#request.session这句是帮你从cookie里面将sessionid的值取出来,
将django-session表里面的对应sessionid的值的那条记录中的session-data字段的数据给你拿出来(并解密),get方法就取出k1这个键对应的值
查看所有的键、值、键值对
request.session.keys()
request.session.values()
request.session.items()

  2.设置值

request.session['k1'] = 123

request.session.setdefault('k1',123) #没有就添加,有就不变
#帮你生成随机字符串,帮你将这个随机字符串和用户数据(加密后)和过期时间保存到了django-session表里面,
帮你将这个随机字符串以sessionid:随机字符串的方式添加到cookie里面返回给浏览器,这个sessionid的名字是可以改的 #注意一个事情,django-session这个表,你不能通过orm来控制,因为你的models.py里面没有这个表的对应关系

  3.删除值

del request.session['k1'] #django-session表里面同步删除

#删除当前的会话数据并删除会话的cookie。
request.session.flush() #常用,清空所有cookie --- 删除session表里这个会话的记录,

Djangou中的session配置

Django中默认支持session其内部提供了5种类型的session供开发者使用
1. 数据库Session
SESSION_ENGINE = 'django.contrib.sessions.backends.db' # 引擎(默认) 2. 缓存Session
SESSION_ENGINE = 'django.contrib.sessions.backends.cache' # 引擎
SESSION_CACHE_ALIAS = 'default' # 使用的缓存别名(默认内存缓存,也可以是memcache),此处别名依赖缓存的设置 3. 文件Session
SESSION_ENGINE = 'django.contrib.sessions.backends.file' # 引擎
SESSION_FILE_PATH = None # 缓存文件路径,如果为None,则使用tempfile模块获取一个临时地址tempfile.gettempdir() 4. 缓存+数据库
SESSION_ENGINE = 'django.contrib.sessions.backends.cached_db' # 引擎 5. 加密Cookie Session
SESSION_ENGINE = 'django.contrib.sessions.backends.signed_cookies' # 引擎 其他公用设置项:
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,默认修改之后才保存(默认)

Djangou中使用cookie和session的更多相关文章

  1. 第74节:Java中的Cookie和Session

    第74节:第74节:Java中的Cookie和Session ServletContext: 什么是ServletContext,有什么用哦,怎么用呢? 启动服务器后,会给每个应用程序创建一个Serv ...

  2. Flask中使用cookie和session

    Flask中使用cookie和session 设置cookie from flask import Flask,Response app = Flask(__name__) @app.route('/ ...

  3. {Django基础八之cookie和session}一 会话跟踪 二 cookie 三 django中操作cookie 四 session 五 django中操作session

    Django基础八之cookie和session 本节目录 一 会话跟踪 二 cookie 三 django中操作cookie 四 session 五 django中操作session 六 xxx 七 ...

  4. django系列7.2--django中的cookie和session基本操作,浏览器登陆验证的不同实现

    django中的cookie和session(02)–操作 一.Django中的cookie操作 ctrl + shift + del 是谷歌浏览器中清除页面缓存和cookie的快捷键 1.设置coo ...

  5. IM开发基础知识补课(四):正确理解HTTP短连接中的Cookie、Session和Token

    本文引用了简书作者“骑小猪看流星”技术文章“Cookie.Session.Token那点事儿”的部分内容,感谢原作者. 1.前言 众所周之,IM是个典型的快速数据流交换系统,当今主流IM系统(尤其移动 ...

  6. Django---Django中使用COOKIE和SESSION

    Django---Django中使用COOKIE和SESSION 一丶Cookie cookie的由来 # HTTP协议是无状态的. # 无状态的意思是每次请求都是独立的,它的执行情况和结果与前面的请 ...

  7. Servlet中的cookie和session

    保存数据的2中方式 Cookie Session Cookie 我们可以将一些信息保存到cookie中,cookie存放在对应的浏览器目录里面.每个站点可以保存20个cookie,最大长度不超过4k. ...

  8. Django中的cookie与session

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

  9. 理解会话中的Cookie和Session对象

    会话可以简单理解为:用户打开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话. 在java语言中,Servlet程序是由WEB服务器调用,web服务器收到客 ...

随机推荐

  1. Flutter学习笔记(2)--Dart语言简介

    Dart简介: Dart诞生于2011年10月10日,Dart是一种"结构化的web编程"语言,Dart虽然是谷歌开发的计算机编程语言,但后来被ECMA认定位标准,这门语言用于We ...

  2. if while 条件语句练习题

    1.使用while循环输入123456 8910 n = 1 while n < 11 if n == 7 pass else print(n) n= n + 1 2.求1-100内所有数的和. ...

  3. java集合知识点总结

    下面是java中常见的集合: List--列表:内部元素有序,可以重复, ArrayList:线程不安全,效率高.数据结构是线性表,底层结构是顺序表,也就是数组,有唯一的下标来指定元素的位置,查询快, ...

  4. php实现redis锁机制

    <?php class Redis_lock { public static function getRedis() { $redis = new redis(); $redis->con ...

  5. 长春理工大学第十四届程序设计竞赛(重现赛)L

    L.Homework Stream 题目链接:https://ac.nowcoder.com/acm/contest/912/L 题目 作为大珩班尖子生,小r每天有很多作业要完成,例如工图.工图和工图 ...

  6. 并发编程-concurrent指南-线程池ExecutorService的实例

    1.new Thread的弊端 执行一个异步任务你还只是如下new Thread吗? new Thread(new Runnable() { @Override public void run() { ...

  7. Codeforces 781A:Andryusha and Colored Balloons(DFS染色)

    http://codeforces.com/contest/782/problem/C 题意:给一棵树染最少的颜色,使得相邻距离为2的点都是不同的颜色,问最少是多少种颜色并输出每个点的颜色. 思路:比 ...

  8. 关于关闭WPS锁屏屏保及设置电脑自动关闭显示屏及休眠的分享

    最近公司工作的电脑突然自动加上了屏保锁屏,百思不得其解什么时候设置的,谁给设置的,未经用户允许就擅自给用户设置了??? 金山WPS未经用户允许给用户设置了锁屏屏保,而且这个功能非常不好用,按键盘有时候 ...

  9. Android native进程间通信实例-socket本地通信篇之——服务端进程异常退出解决办法

    导读: 好难受啊,为什么服务端说挂就挂,明明只是客户端关闭而已,服务端怎么能挂呢? 想想,如果手机上使用一个聊天程序的时候,手机端关闭了聊天程序,那么远端服务器程序总不能说挂就挂吧!所以一定要查明真相 ...

  10. JAVA面试题 浅析Java中的static关键字

    面试官Q1:请说说static关键字,你在项目中是怎么使用的? static 关键字可以用来修饰:属性.方法.内部类.代码块: static 修饰的资源属于类级别,是全体对象实例共享的资源: 使用 s ...