zoukankan      html  css  js  c++  java
  • 读写Session

    读写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:progectFirstdjango
    
    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脚本文件创建位置如下图所示:

    
    
  • 相关阅读:
    HLG 1522 子序列的和【队列的应用】
    POJ 3273 Monthly Expense【二分】
    HDU 4004 The Frog's Games 【二分】
    POJ 2001 Shortest Prefixes【第一棵字典树】
    POJ 2823 Sliding Window【单调对列经典题目】
    HDU 1969 Pie 【二分】
    POJ 3125 Printer Queue【暴力模拟】
    POJ 3250 Bad Hair Day【单调栈】
    字典树【模板】
    验证码 Code
  • 原文地址:https://www.cnblogs.com/effortsing/p/10396850.html
Copyright © 2011-2022 走看看