Django(part37)--session(Django MVT)

网友投稿 258 2022-08-31


Django(part37)--session(Django MVT)

学习笔记,仅供参考,有错必究

文章目录

​​cookies和session​​

​​session​​

​​Django启用Session​​​​session的基本操作​​​​session 示例​​

cookies和session

session

session的意思就是会话,session可以在服务器上开辟一段空间,保留浏览器和服务器交互时的重要数据(重要数据一定是存储在服务器上),每个客户端都可以在服务器端有一个独立的session;

= [ # 启用 sessions 应用 'django.contrib.sessions',]

在MIDDLEWARE_CLASSES列表中添加(如果已经存在就不再添加):

MIDDLEWARE = [ # 启用 Session 中间层 'django.contrib.sessions.middleware.SessionMiddleware',]

session的基本操作

session对象是一个类似于字典的SessionStore对象, 可以用类似于字典的方式进行操作,session只可以存储能够序列化的数据,如字典,列表等。

保存 session 的值到服务器

request.session['KEY'] = VALUE#VALUE为Python中的基础数据类型

获取session的值

VALUE = request.session['KEY']#或VALUE = request.session.get('KEY', 缺省值)

删除session的值

del request.session['KEY']

在 settings.py中有关 session 的设置

SESSION_COOKIE_AGE#作用:指定session_id在cookies中的保存时长 #例如:SESSION_COOKIE_AGE = 60*30SESSION_EXPIRE_AT_BROWSER_CLOSE = True #若为True, 则只要浏览器关闭时, session就失效

注意事项

当使用session时需要迁移数据库,否则会出现错误,这是因为session看起来是一个字典,但实际上,session需要把它的内容序列化到数据库中。

python manage.py makemigrationspython manage.py migrate

session 示例

我们在主视图模块views.py中加入两个视图函数:

def test_session(request): # 为session 添加mykey 对应的值 request.session['mykey'] = ['山羊', '黑山羊'] return HttpResponse('设置成功')def show_session(request): # 取出sesssion中,mykey对应的数据 value = request.session.get('mykey', 'mykey没有对应的值') s = str(value) return HttpResponse(s)

在主urls.py文件中,加入俩路由:

from django.urls import re_pathfrom django.contrib import adminfrom django.conf.urls import includefrom . import viewsurlpatterns = [ re_path(r'^admin/', admin.site.urls), re_path(r'^show_session/', views.show_session), re_path(r'^test_session/', views.test_session),]

向test_session(request): del request.session['mykey'] return HttpResponse('设置成功')

向http://127.0.0.1:8000/test_session/发起请求,将服务器端的session删除,并查看http://127.0.0.1:8000/show_session/:

嗯,session已经被删除了!

但需要注意的是,虽然我们的session在服务器端被删除了,但是我们的浏览器依然保存着sessionid:

这有点类似于,我们的银行账户被冻结了,但是我们依然保留着该卡号的银行卡。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Django(part42)--限制IP请求次数
下一篇:聊聊SpringBoot整合Nacos自动刷新配置的问题
相关文章

 发表评论

暂时没有评论,来抢沙发吧~