概括性的讲:

  1、django默认是打开对session的支持的

  2、默认情况下session相关的数据会保存在数据库中、浏览器端只保存了session id

session 的科普:

  1、动态网站中的页面都是由应用服务器动态生成的、内容的差别是由数据决定的;比较说你在京东的购物车信息和我在京东

  的购物车信息是不同的。也就是说网站的内容是根据你的数据“画”出来的。

  2、怎么关联到用户所对应的数据呢?通常的解决方式是“登录”登录之后服务器就知道你是谁了,它就可以在数据库中查到你

  的数据,然后就可以根据你的数据“画”出你的web页面。 但是这样还是有问题的,问题就在于它区分不了没有登录的用户,也

  就是说这样情况下所有的匿名用户看到的内容是一样的,为了能区分匿名用户,引入了session + cookie 这一机制;事实上前面

  说的“登录”后服务器能记住用户,也是基于这个的。

  3、服务器为每一个用户分配一个session id ,可以把这个session id 类比成超市门口的储物柜的格子号、你的东西就放在你的格子

  号所对应的格子里;这个session id 一般的用户不会关注的,除非你的程序员、这个session id 放在哪里是由浏览器自己决定的、像

  IE会把session id 记录到一个txt文件中去;有了session id后浏览器每次请求服务器时都会发送这个session id 、服务器有了session

  id 就能在服务器的“储物柜”中找到你的那个格子了。

例子:

  1、第一次访问页面、由于没有session id 通常服务器会给一个默认的返回,并分配给用户一个session id

  2、第二次访问页面、由于已经有了session id 那么就可以根据session id 所对应的数据动态的“画”页面了

  3、关键代码

from django.http import HttpResponse

def index(request):
"""
""" if request.session.get('name',None) == None:
request.session['name']='二狗'
return HttpResponse("你还没有名字 给你起一个‘二狗’吧! ")
return HttpResponse("你好{0}! ".format(request.session['name']))

  4、由于第一次访问还没有分配到session id 、这个时候会给它分配一个新的name “二狗”

  5、第二次访问时就可以根据它的session 保存的数据进行动态的页面“画”图了

同样的一条url由于第二次访问已经有了数据、所以页面的内容就变了

服务器把session中的数据保存在了哪里:

  django的默认配置下session中的数据是保存在数据库中的、不过这个行为可以通过设置进行调整;我们这里只关注默认行为

  数据库中查看session的数据:

 select * from django_session limit 1 \G
*************************** 1. row ***************************
session_key: gd60lzva562k4cmzers6gu06gtli4kof
session_data: ZjFiZDgwYmI2OTFhMzdlNGEzODM2YTVjNTcwNjM5ZjI3NzcwNzlmNzp7Im5hbWUiOiJcdTRlOGNcdTcyZDcifQ==
expire_date: 2018-03-22 09:22:00.320357

  不是说好的“二狗”吗? 怎么看不出汉字?别怕这个是经过base64编码过的结果、我们要看到内容要把base64这一层去掉

看到了吧 已经找到了我们设置的name,“二狗”这个值还是不对呀! 别慌这个是unicode字面值、还要再解一次码、就能看到中文了

  

  

 总结:

  1、默认情况下django中session的内容基本上就说完了

  2、默认情况下是有一定问题的、session的更新都要访问MySQL数据库、所以这里可能成功性能的瓶颈。

----

django session入门详解的更多相关文章

  1. Django form入门详解--2

    调整form的输出格式: 默认情况下form的格式化输出是基本table的样式的.但是django中还是为form提供发别的输出样式 1.默认的table样式输出 <html> <h ...

  2. Django form入门详解--1

     form在django中的作用: 1.可以用于自动生成form的html 2.数据校验 3.与model一在一起使用.可以大的方便数据驱动型网站的开发 编程中有许多的东西是“不可描述”的.只有动手去 ...

  3. 转:JAVAWEB开发之权限管理(二)——shiro入门详解以及使用方法、shiro认证与shiro授权

    原文地址:JAVAWEB开发之权限管理(二)——shiro入门详解以及使用方法.shiro认证与shiro授权 以下是部分内容,具体见原文. shiro介绍 什么是shiro shiro是Apache ...

  4. Linq之旅:Linq入门详解(Linq to Objects)

    示例代码下载:Linq之旅:Linq入门详解(Linq to Objects) 本博文详细介绍 .NET 3.5 中引入的重要功能:Language Integrated Query(LINQ,语言集 ...

  5. SQL注入攻防入门详解

    =============安全性篇目录============== 本文转载 毕业开始从事winfrm到今年转到 web ,在码农届已经足足混了快接近3年了,但是对安全方面的知识依旧薄弱,事实上是没机 ...

  6. SQL注入攻防入门详解(2)

    SQL注入攻防入门详解 =============安全性篇目录============== 毕业开始从事winfrm到今年转到 web ,在码农届已经足足混了快接近3年了,但是对安全方面的知识依旧薄弱 ...

  7. Quartz 入门详解

    Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用.Quartz可以用来创建简单或为运行十个,百个, ...

  8. Redis快速入门详解

    Redis入门详解 Redis简介 Redis安装 Redis配置 Redis数据类型 Redis功能 持久化 主从复制 事务支持 发布订阅 管道 虚拟内存 Redis性能 Redis部署 Redis ...

  9. [转]SQL注入攻防入门详解

    原文地址:http://www.cnblogs.com/heyuquan/archive/2012/10/31/2748577.html =============安全性篇目录============ ...

随机推荐

  1. UART,SPI,IIC的一点理解

    转自:http://bbs.21ic.com/icview-253715-1-1.html UART通用异步收发器,UART是通用的异步传输模式,在它这种基础上加上其他接口或者解码器就衍生出多种异步传 ...

  2. 为wget命令设置代理

    实验环境:ubuntu 12.04 LTS  goagent 方法一.在环境变量中设置代理 export http_proxy=http://127.0.0.1:8087 方法二.使用配置文件 为wg ...

  3. Jquery 获取对象的几种方式(转载)

    1.先讲讲JQuery的概念 JQuery首先是由一个 America 的叫什么 John Resig的人创建的,后来又很多的JS高手也加入了这个团队.其实 JQuery是一个JavaScript的类 ...

  4. Linux环境变量加载顺序

    01.环境变量文件描述 /etc/profile: 此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行,并从/etc/profile.d目录的配置文件中搜集shell的设置./etc ...

  5. Arduino的光敏传感器和超声波测距传感器测试代码

    光敏传感器测试代码 使用的是一个未知名4pin模块, 4pin依次为Vcc, Gnd, DO, AO, 板载一个可调电阻以及一个LED, 调节电阻大小, 可以控制LED亮灭和DO输出变化对光亮的灵敏度 ...

  6. 【公众号】微信第三方登录(静默授权和非静默授权)(具体代码:U盘 新浪云SAE)

    一.微信联合登录是怎么登录的,有几种登录方式:微信联合登录和微信授权登录[授权登录(非静默授权)与静默授权] [主动授权]:需要用户确认登录,这样可以通过用户的个人确认,获取用户全面的信息,无论是否关 ...

  7. Docker命令分类及使用场景分布(脑图)

    常见的Docker命令分类主要有 不同使用场景下的命令分布 有疑问可到官方文档查询: https://docs.docker.com/engine/reference/commandline/dock ...

  8. Easyui入门视频教程 第07集---Accordion的使用

    Accordion 是一个 收缩的组件 类似挂历的 百度了一下 意思是 accordion 英[əˈkɔ:diən] 美[əˈkɔrdiən] n. 手风琴 adj. 可折叠的 他就是 一个折叠的 很 ...

  9. java实现https ssl请求url

    import java.io.*;import java.net.*;import java.security.*;import java.security.cert.*;import java.ut ...

  10. 使用Java调用JS

    import junit.framework.TestCase; import javax.script.ScriptEngine; import javax.script.ScriptEngineM ...