【发布时间】:2011-11-09 21:40:19
【问题描述】:
这个表需要被清除还是由 Django 自动处理?
【问题讨论】:
标签: python django django-sessions
这个表需要被清除还是由 Django 自动处理?
【问题讨论】:
标签: python django django-sessions
【讨论】:
我知道这篇文章很旧,但我尝试了这个命令/属性,它对我有用。
在“base.html”文件中,我插入了: {{ request.session.clear_expired }}
当会话过期后用户点击模板中的任何链接时,这会从 django_session 表中清除过期记录。
即便如此,还是有必要创建一个例程来清除超过一天的过期记录。当用户关闭带有打开会话的浏览器时,这是清除日志所必需的。
我使用的是 Django 3.2.4
【讨论】:
Django 不提供自动清除功能。但是,有一个方便的命令可以帮助您手动完成:Django docs: Clearing the session store
python manage.py clearsessions
【讨论】:
TRUNCATE django_session; 也可以工作。
select*from django_session; 或查看有多少 select count (*)from django_session;
在我的development server 上,我更喜欢使用数据库命令而不是python manage.py clearsessions,因为您删除了所有会话,而不仅仅是过期的会话(这里:MySQL)。要登录到您的数据库并执行以下操作:
truncate table django_session;
顺便说一句,session 不是数据库,而是一个表 (django_session) 和一个应用程序 (django.contrib.sessions)。
【讨论】:
python manage.py clearsessions
python manage.py cleanup
from django.contrib.sessions.models import Session
Session.objects.all().delete()
【讨论】: