会话数据库表清理

问题描述 投票:0回答:6

该表是否需要清除或者由 Django 自动处理?

python django django-sessions
6个回答
64
投票

Django 不提供自动清除功能。然而,有一个方便的命令可以帮助您手动完成此操作:Django 文档:清除会话存储

python manage.py clearsessions

23
投票
  1. Django 1.6 或更高版本
    python manage.py clearsessions
    
  2. Django 1.5 或更低版本
    python manage.py cleanup
    
  3. 来自 Django Shell
    from django.contrib.sessions.models import Session
    Session.objects.all().delete()
    
  4. django 会话清理 玉米工作

3
投票

在我的

development server
上,我更喜欢数据库命令而不是
python manage.py clearsessions
,因为您删除所有会话,而不仅仅是过期的会话(此处:MySQL)。要登录您的数据库并执行以下操作:

truncate table django_session;

顺便说一句,

session
不是数据库,而是一个表(django_session)和一个应用程序(
django.contrib.sessions
)。


0
投票

我知道这篇文章很旧,但我尝试了这个命令/属性,它对我有用。

在“base.html”文件中,我插入了: {{ request.session.clear_expired }}

当用户在会话过期后单击模板中的任何链接时,这将从 django_session 表中清除过期记录。

即便如此,还是有必要创建一个例程来清除超过一天的过期记录。当用户关闭打开会话的浏览器时,这是清除日志所必需的。

我使用Django 3.2.4


0
投票

其他方法:

我正在使用 Django 3.2,我建议使用 django-auto-logout 包。

它允许活动时间和空闲时间会话控制。

在模板中,您可以将变量与Javascript一起使用。


0
投票

请勿执行

Session.objects.all().delete()
TRUNCATE TABLE django_session;
,因为这会删除所有会话,包括活动会话!

如果您想以编程方式清除过期会话:

from django.core import management

management.call_command('clearsessions')
© www.soinside.com 2019 - 2024. All rights reserved.