• 137.在Django中操作session


    在Django中操作session

    在django中session默认情况下是存储在服务器的数据库中的,在表中会根据sessionid来提取指定的session数据,然后再把这个sessionid放到cookie中发送给浏览器存储,浏览器下次在服务器发送请求的时候会自动的把所有的cookie信息发送给服务器,服务器再从cookie中获取sessionid,然后再从数据库中获取session数据。但是我们在操作session的时候,这写细节是不用纠结的,可以直接通过request.session即可操作。
    在views.py文件中示例代码如下:
    from django.http import HttpResponse
    
    
    def index(request):
        request.session['username'] = 'guyan'
        session = request.session.get('username')
        print(session)
        return HttpResponse('Success')
    
    在数据库中的django_session表中存储了session_key(随机生成的标识session中存储的数据的唯一性id,即主键),session_data(经过加密之后的数据),expire_date(过期时间),这三项数据。
    在浏览器中查看cookie中是否有session_id,并且内容与数据库中的sessions_key的内容一样。
    session常用的方法如下:
    (1)get:用来从session中获取指定值。
    (2)pop: 从session中删除一个值,并且将删除的值进行返回
    username = request.session.pop('username')
    
    (3)keys:从session中获取所有的键。
    (4)items:从session中获取所有的值。
    (5)clear:清除当前这个用户的session数据。
    request.session.clear()
    
    (6)flush:删除session并且删除在浏览器中存储的session_id,一般会在注销的时候用的比较多。
    request.session.flush()
    
    (7)set_expiry(value):设置过滤时间。
    1. 整形:代表的是秒数,设置多少秒之后过期。
    2. 0:代表的是只要浏览器关闭session就过期。
    3. None:会使用全局的session配置。在settings.py中可以设置SESSION_COOKIE_AGE来配置全局的过期时间。默认是1209600秒,也就是2周的时间。
    request.session.set_expiry(None)
    
    (8)clear_expired:清除过期的session。jango并不会清除过期的session,需要定期的清理,或者是在终端,使用命令行python manage.py clearsession来清除过期的session。
    <!--首先设置一个过期的时间-->
    request.session.set_expiry(-1)
    
    始于才华,忠于颜值;每件事情在成功之前,看起来都是天方夜谭。一无所有,就是无所不能。
  • 相关阅读:
    第 6 章 Android SDK 版本与兼容
    第 5 章 第二个 activity
    第 4 章 Android 应用的调试
    第 3 章 Activity 的生命周期
    第 2 章 Android 与 MVC 设计模式
    第 1 章 Android 应用初体验
    ACM基础之线性结构:一刷 参考答案
    小马慢慢跑
    Ubuntu 利用 xinetd 限制 SSH 连接数
    C# 定制 Attribute 简单使用
  • 原文地址:https://www.cnblogs.com/guyan-2020/p/12354662.html
Copyright © 2020-2023  润新知