Django第37部分中,如何实现和优化session管理?
- 内容介绍
- 文章标签
- 相关推荐
本文共计757个文字,预计阅读时间需要4分钟。
学习笔记,仅供参考,有误必究。文章目录: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:
当我们使用自定义视图函数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分钟。
学习笔记,仅供参考,有误必究。文章目录: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:
当我们使用自定义视图函数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:
这有点类似于,我们的银行账户被冻结了,但是我们依然保留着该卡号的银行卡。

