一、会话跟踪

  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. pytorch实现yolov3(3) 实现forward

    之前的文章里https://www.cnblogs.com/sdu20112013/p/11099244.html实现了网络的各个layer. 本篇来实现网络的forward的过程. 定义网络 cla ...

  2. Hive 学习之路(四)—— Hive 常用DDL操作

    一.Database 1.1 查看数据列表 show databases; 1.2 使用数据库 USE database_name; 1.3 新建数据库 语法: CREATE (DATABASE|SC ...

  3. Codeforces Round #568 (Div. 2)B

    B. Email from Polycarp 题目链接:http://codeforces.com/contest/1185/problem/B 题目: Methodius received an e ...

  4. F#周报2019年第27期

    新闻 介绍Femto--使用Fable绑定的自动化npm包解决方案 Babel 7.5.0发布,包含动态导入与F#管道 iOS 13预览版发布 视频及幻灯片 Fabulous--F#用于跨平台移动应用 ...

  5. kafka源码分析(二)Metadata的数据结构与读取、更新策略

    一.基本思路 异步发送的基本思路就是:send的时候,KafkaProducer把消息放到本地的消息队列RecordAccumulator,然后一个后台线程Sender不断循环,把消息发给Kafka集 ...

  6. 在SpringBoot中使用RabbitMQ

    目录 RabbitMQ简介 RabbitMQ在CentOS上安装 配置文件 实践 概述 Demo 遇到的BUG 启动异常 无法自动创建队列 RabbitMQ简介 wikipedia RabbitMQ在 ...

  7. .NET Core 3.0之深入源码理解Kestrel的集成与应用(二)

      前言 前一篇文章主要介绍了.NET Core继承Kestrel的目的.运行方式以及相关的使用,接下来将进一步从源码角度探讨.NET Core 3.0中关于Kestrel的其他内容,该部分内容,我们 ...

  8. 1. Python 魔法方法

    Python 魔法方法 基础: 如果你想... 所以,你写... Python调用... 初始化一个实例 x = MyClass() x.__init__() 作为一个字符串的"官方&quo ...

  9. RDBMS与数据库之间的关系

    什么是数据库? 数据库就是用来存放数据的仓库,它是一种特殊的文件. 什么是关系型数据库? 关系型数据库就是指建立在关系模型基础上的数据库,通常由多张表组成,这些表之间存在一定的关系. 什么是RDBMS ...

  10. 使用flink Table &Sql api来构建批量和流式应用(2)Table API概述

    从flink的官方文档,我们知道flink的编程模型分为四层,sql层是最高层的api,Table api是中间层,DataStream/DataSet Api 是核心,stateful Stream ...