读写Session

Session是保存在服务端的字典

Session与Cookie有些类似,都是通过字典管理key-value对,只不过Cookie是保存在客户端的字典,而Session是保存在服务端的字典。Session可以在服务端使用多种存在方式,

默认一般存储在内存中,一旦web服务重启,所有保存在内存中的Session就会消失。为了让Session即使在web服务器重启后仍然能够存在,也可以将Session保存到文件或者数据中。

不管如何保存Session,操作都是一样的。

Session的另外一个重要作用就是跟踪客户端。也就是说,当一个客户端浏览器访问web服务器后,关闭浏览器,再次启动浏览器,再次访问web服务。这时web服务器就会知道这个浏览器

已经访问了两次web服务。这就是通过Session跟踪的。每一个客户端访问web服务器时都会创建一个单独的Session,同时为这个Session生成一个ID,这里就叫它Session-ID。

这个Session-ID会利用Cookie的方式保存在客户端,如果客户端再次访问web服务器时,这个ession-ID也会跟着HTTP请求发送给web服务,web服务会通过这个Session-ID寻找这个客户端

的Session。也就是说如果客户端不支持Cookie,那么Session是无法跟踪客户端的。当然可以通过其他方式保存这个Session-ID,这里不做讨论。

读写session都需要使用路由函数的request的参数,

本例通过session属性读写两对key-value,并设置了Session的有效期

1、首先建立工程,建立工程请参照:https://www.cnblogs.com/effortsing/p/10394511.html

2、在工程的Firstdjango目录中建立一个session.py脚本文件,然后在session.py文件中添加如下内容:

from django.http import HttpResponse
from django.http import HttpResponseRedirect def writeSession(request):
# 设置名为name的Session
request.session['name']='Bill'
# 设置名为age的Session
request.session['age']=30
return HttpResponse('writeSession')
def readSession(request):
result=''
# 读取名为name的Session,如果没有name,返回None
name=request.session.get('name')
# 读取名为age的Session,如果没有age,返回None
age=request.session.get('age')
if name:
result='<h2>name:<font color="red">'+name+'</font></h2>'
if age:
result+='<h2>age:<font color="blue">'+str(age)+'</font></h2>'
return HttpResponse(result,content_type="text/html") 3、然后在Firstdjango目录中找到urls.py脚本文件,用下面的代码代替urls.py脚本里面的内容: from django.conf.urls import url
from .import session
urlpatterns=[
#下面代码是本例添加的路由方法与正则表达式的映射
url(r'^writeSession$',session.writeSession),
url(r'^readSession$',session.readSession),
] 4、配置migrate 进入项目manage所在的目录中执行如下命令,否则会报错:no such table: django_session 进入cmd 输入盘符比如:E: 切换目录 cd E:\progect\Firstdjango python manage.py migrate 5、启动django 6、浏览器访问: http://127.0.0.1:8000/writeSession
writeSession http://127.0.0.1:8000/readSession
name:Bill
age:30 如果想精确控制session的有效期,需要在setting.py脚本文件中设置SESSION_COOKIE_AGE变量,如下面代码将session的有效期设置为20s SESSION_COOKIE_AGE=20 如果使用了上面的设置,session在20s后将过期,过期的session将无法读取。 7、上面建立session.py脚本文件创建位置如下图所示:


最新文章

  1. iOS中UIImageView的填充模式
  2. PHP 超级全局变量
  3. (CodeForces 510C) Fox And Names 拓扑排序
  4. STL unique使用问题
  5. 用3种方法在 operator= 中处理“自我赋值”
  6. ehcache memcache redis 区别
  7. linux—粘滞位的设置
  8. C++用LuaIntf调用Lua代码示例
  9. scrapy分布式爬虫scrapy_redis二篇
  10. Ubuntu: 安装自带的中文输入法
  11. dp经典问题-最大连续子序列和 hdu1003
  12. python变量进阶(可变不可变,局部变量和全局变量)
  13. winscp中使用sudo的方法
  14. maven 创建project
  15. C# CashCode项目开发
  16. pageadmin CMS网站制作教程:
  17. 《浅析Entity Framework Core中的并发处理》引起的思考
  18. 21. Date 函数
  19. MySql 创建函数 Error Code : 1418
  20. UnicodeDecodeError: &#39;gbk&#39; codec can&#39;t decode byte 0xab in position 11126: illegal multibyte sequence

热门文章

  1. mxnet在windows使用gpu 出错
  2. spark几个错误
  3. JVM内存空间划分与作用详解
  4. bloomberg bulkfile 在oracle的存储
  5. css选择器学习(二)属性选择器
  6. python_字符串方法
  7. easyui-dialog打开之后append(&quot;标签&quot;)标签存在但是显示不出来
  8. Django框架下数据存储实现时间戳格式存储到数据库2019-12-11 17:53:13
  9. [2019年湘潭大学程序设计竞赛(重现赛)H chat][背包dp]
  10. Python 10.2.1