原理
1 Session基于Cookie
2 Session把敏感的数据以加密的方式保存在服务器
设置
request.session[key] = value
设置过期时间:request.session.set_expiry(60*60)
获取:value = request.session.get(key)
若是没有key,返回None
例子
1 首先先配置主项目的urls:
2 然后在配置apps里的urls和views视图
3 创建MySQL项目,生成迁移文件
4 运行项目
代码1:
from django.contrib import admin
from django.urls import path,include
urlpatterns = [
path('admin/', admin.site.urls),
path('',include('user.urls')),
]
代码2:
from django.urls import path,re_path
from . import views
urlpatterns = [
path('',views.index_handler,name='index'),
re_path('set_cookie/(.+)/(.+)',views.set_cookie_handler,name='set_cookie'),
re_path('get_cookie/(.+)',views.get_cookie_handler,name='get_cookie'),
re_path('set_session/(.+)/(.+)',views.set_session_handler,name='set_session'),
re_path('get_session/(.+)',views.get_session_handler,name='get_session'),
path('flush',views.flush_session_handler,name='flush'),
path('clear',views.clear_session_handler,name='clear'),
]
视图:
from django.shortcuts import render,HttpResponse
# Create your views here.
def index_handler(request):
return HttpResponse('index')
def set_cookie_handler(request,key,value):
response = HttpResponse()
response.set_cookie(key,value,max_age=60*60)
return response
def get_cookie_handler(request,key):
value = request.COOKIES.get(key)
return HttpResponse(value)
def set_session_handler(request,key,value):
request.session[key] = value
# request.session.set_expiry(60*60)
return HttpResponse('设置成功')
def get_session_handler(request,key):
value = request.session.get(key)
return HttpResponse(value)
def flush_session_handler(request):
request.session.flush()
return HttpResponse('flush')
def clear_session_handler(request):
request.session.clear()
return HttpResponse('clear')
代码3:生成迁移文件
create database django3;
启动项目:
- 输入:http://127.0.0.1:8000/set_session/username/name2
显示:设置成功! - 输入:http://127.0.0.1:8000/get_session/username
显示:name2 - 刷新数据库,会出现刚才输入的数据:

删除和清空
request.session.flush() 删除表结构
request。session.clear() 清空sessionld对应的数据
代码如上:
输入:http://127.0.0.1:8000/clear
刷新数据库,在data表里数据发生变化
输入:http://127.0.0.1:8000/get_session/username
返回的是None
输入:http://127.0.0.1:8000/flush
刷新数据库,数据库的数据全部消失!
本文深入解析了Django框架中的Session机制,包括Session的工作原理、如何基于Cookie进行数据存储、如何在服务器端加密保存敏感数据,以及如何通过Python代码设置、获取和管理Session。文章还提供了详细的代码示例,展示了如何在Django项目中实现Session的设置、获取、删除和清空操作。

被折叠的 条评论
为什么被折叠?



