20、Django-会话-cookie和session-2
session是在服务器上开辟一段空间用于保留和服务器交互时的重要数据 实现方式: -- 使用session需要在浏览器客户端启动cookie、且在cookie中存储session -- 每个客户端都可以在服务器端有一个独立的session -- 注意:不同的请求者之间不会共享这个数据、与请求者一一对应
在Django中的配置-一般默认的配置、没有就添加
--开启session
setting.py ------------------------------------------------------- INSTALLED_APPS = [ .......... 'django.contrib.sessions', ......... ] #中间件 MIDDLEWARE = [ ...... 'django.contrib.sessions.middleware.SessionMiddleware', ................ ]
使用session
session对象是一个类似与字典的SessionStore类型的对象、可以用类似于字典的方式进行操作 -- session能够存储:字符串、整型、字典、列表等 1、保存session的值到服务器: -- request.session['key'] = value 2、获取session的值 -- value = request.session['key'] -- value = request.session.get('KEY', 默认值) -- 推荐使用这种方法取值 3、删除session -- del request.session['key'] 注意:在django中session默认的缓存是使用数据库保存的、所以要先迁移数据库、不然会报: -- django.db.utils.OperationalError: no such table: django_session
主路由:urls.py ---------------------------------------- from django.contrib import admin from django.urls import path from django.urls import include urlpatterns = [ path('admin/', admin.site.urls), path('cs/', include('cs_app.urls'), name='cs_app'), ] ----------------------------------------------------------- 子路由:urls.py ---------------------------------------------------- from django.urls import path from cs_app.views import * urlpatterns = [ path('set_cookies/', set_cookie, name='set_cookies'), path('get_cookies/', get_cookie, name='get_cookies'), path('set_session/', set_session, name='set_session'), path('get_session/', get_session, name='get_session'), ] -------------------------------------------------------------- views.py ---------------------------------------------------------------------- from django.http import HttpResponse from django.shortcuts import render #保存cookie def set_cookie(request): # response = render(request, 'set_cookie.html') # response.set_cookie('username', 'zhangsan', max_age=3600) # return response resp = HttpResponse('set cookie is ok') resp.set_cookie('username', 'xiaoxin', max_age=3600) return resp #取cookie def get_cookie(request): username = request.COOKIES.get('username') #username = request.COOKIES['username'] return HttpResponse('username is %s' % username) #保存session�存session = get_cookie() def set_session(request): request.session['username'] = 'ctx' return HttpResponse('set session is ok') #取session def get_session(request): username = request.session.get('username') return HttpResponse('username is %s' % username) ------------------------------------------------------------------------ #记得先迁移数据库 -- python .\manage.py makemigrations -- python .\manage.py migrate
session的相关配置
在setting.py中的配置 --------------------------------------------------------------- 1、SEESION_COOKIE_AGE = 60 * 60 * 24 * 7 * 2 -- 作用是指定sessionid在cookies中的保存时长(默认是2周) 2、SESISION_EXPIRE_AT_BROWSER_CLOSE = True -- 设置只要关闭浏览器时、session就会失效(默认为False)
删除session
可以定时做删除过期的seesion -- python3 manage.py clearsessions
本文作者:little小新
本文链接:https://www.cnblogs.com/littlecc/p/18180870
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步