43

这张表需要被清除还是由 Django 自动处理?

4

5 回答 5

60

Django 不提供自动清除。然而,有一个方便的命令可以帮助您手动完成:Django docs: Clearing the session store

python manage.py clearsessions
于 2011-09-03T22:26:18.110 回答
18
  1. Django 1.6 或更高版本
    python manage.py clearsessions
    
  2. Django 1.5 或更低版本
    python manage.py cleanup
    
  3. 来自 Django 外壳
    from django.contrib.sessions.models import Session
    Session.objects.all().delete()
    
  4. django-session-cleanup 玉米作业
于 2017-10-07T05:30:46.213 回答
2

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

truncate table django_session;

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

于 2018-03-15T09:50:25.903 回答
0

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

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

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

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

我使用了 Django 3.2.4

于 2021-12-23T06:22:40.713 回答
0

其他方法:

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

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

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

于 2022-01-11T15:13:29.203 回答