Django第37部分中,如何实现和优化session管理?

2026-06-10 22:488阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计757个文字,预计阅读时间需要4分钟。

Django第37部分中,如何实现和优化session管理?

学习笔记,仅供参考,有误必究。文章目录:cookies和session,Django启用Session,session的基本操作,示例。

1. cookies和session - cookies:存储在客户端,通常用于存储用户信息,如用户名、密码等。 - session:存储在服务器端,用于存储用户会话信息,如购物车、登录状态等。

2. Django启用Session - 在Django项目中,需要配置settings.py文件中的相关参数来启用Session。

3. session的基本操作 - 获取session:`request.session['key']` - 设置session:`request.session['key']=value` - 删除session:`del request.session['key']`

4. 示例 - 登录成功后,将用户信息存储到session中: python if user.is_authenticated: request.session['user_id']=user.id - 获取session中的用户信息: python user_id=request.session.get('user_id')

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



文章目录

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




cookies和session



session



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

127.0.0.1:8000/test_session/发起请求:

再向127.0.0.1:8000/show_session/发起请求:

当我们关闭浏览器,再访问127.0.0.1:8000/show_session/,发现我们的session依然存在,这是因为session是保存在服务器端,而不是浏览器端。

我们打开浏览器的开发者工具DevTool,进入Application下的Cookies,可以看到列表中有一个sessionid:

Django第37部分中,如何实现和优化session管理?

当我们使用自定义视图函数test_session创建一个session时,浏览器会自动创建一个不重复的sessionid,客户端会拿着这个sessionid在服务器端找到对应的session。

现在,我们删除这个sessionid,再刷新一下127.0.0.1:8000/show_session/,就可以发现找不到session了:

这是因为,我们删除sessionid之后,服务器端就不知道我们要的是哪一个session了。



现在,我们向127.0.0.1:8000/test_session/发起请求,再创建一个session,并向127.0.0.1:8000/show_session/发起请求:

修改视图函数test_session,准备删除服务器端的session:

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

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

嗯,session已经被删除了!

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

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

本文共计757个文字,预计阅读时间需要4分钟。

Django第37部分中,如何实现和优化session管理?

学习笔记,仅供参考,有误必究。文章目录:cookies和session,Django启用Session,session的基本操作,示例。

1. cookies和session - cookies:存储在客户端,通常用于存储用户信息,如用户名、密码等。 - session:存储在服务器端,用于存储用户会话信息,如购物车、登录状态等。

2. Django启用Session - 在Django项目中,需要配置settings.py文件中的相关参数来启用Session。

3. session的基本操作 - 获取session:`request.session['key']` - 设置session:`request.session['key']=value` - 删除session:`del request.session['key']`

4. 示例 - 登录成功后,将用户信息存储到session中: python if user.is_authenticated: request.session['user_id']=user.id - 获取session中的用户信息: python user_id=request.session.get('user_id')

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



文章目录

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




cookies和session



session



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

127.0.0.1:8000/test_session/发起请求:

再向127.0.0.1:8000/show_session/发起请求:

当我们关闭浏览器,再访问127.0.0.1:8000/show_session/,发现我们的session依然存在,这是因为session是保存在服务器端,而不是浏览器端。

我们打开浏览器的开发者工具DevTool,进入Application下的Cookies,可以看到列表中有一个sessionid:

Django第37部分中,如何实现和优化session管理?

当我们使用自定义视图函数test_session创建一个session时,浏览器会自动创建一个不重复的sessionid,客户端会拿着这个sessionid在服务器端找到对应的session。

现在,我们删除这个sessionid,再刷新一下127.0.0.1:8000/show_session/,就可以发现找不到session了:

这是因为,我们删除sessionid之后,服务器端就不知道我们要的是哪一个session了。



现在,我们向127.0.0.1:8000/test_session/发起请求,再创建一个session,并向127.0.0.1:8000/show_session/发起请求:

修改视图函数test_session,准备删除服务器端的session:

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

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

嗯,session已经被删除了!

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

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