该表是否需要清除或者由 Django 自动处理?
Django 不提供自动清除功能。然而,有一个方便的命令可以帮助您手动完成此操作:Django 文档:清除会话存储
python manage.py clearsessions
python manage.py clearsessions
python manage.py cleanup
from django.contrib.sessions.models import Session
Session.objects.all().delete()
在我的
development server
上,我更喜欢数据库命令而不是python manage.py clearsessions
,因为您删除所有会话,而不仅仅是过期的会话(此处:MySQL)。要登录您的数据库并执行以下操作:
truncate table django_session;
顺便说一句,
session
不是数据库,而是一个表(django_session)和一个应用程序(django.contrib.sessions
)。
我知道这篇文章很旧,但我尝试了这个命令/属性,它对我有用。
在“base.html”文件中,我插入了: {{ request.session.clear_expired }}
当用户在会话过期后单击模板中的任何链接时,这将从 django_session 表中清除过期记录。
即便如此,还是有必要创建一个例程来清除超过一天的过期记录。当用户关闭打开会话的浏览器时,这是清除日志所必需的。
我使用Django 3.2.4
请勿执行
Session.objects.all().delete()
或TRUNCATE TABLE django_session;
,因为这会删除所有会话,包括活动会话!
如果您想以编程方式清除过期会话:
from django.core import management
management.call_command('clearsessions')