Reputation: 8509
Does this table need to be purged or is it taken care of automatically by Django?
Upvotes: 49
Views: 31824
Reputation: 956
Do NOT execute Session.objects.all().delete()
nor TRUNCATE TABLE django_session;
, as that would delete all sessions, including active ones!
If you want to clear expired sessions programmatically:
from django.core import management
management.call_command('clearsessions')
Upvotes: 1
Reputation: 1
Other method:
I'm using Django 3.2 and i recommend using the django-auto-logout package.
It allows active time and idle time session control.
In the template you can use variables together with Javascript.
Upvotes: 0
Reputation: 1
I know this post is old but I tried this command/attribute and it worked for me.
In the 'base.html' file, I inserted: {{ request.session.clear_expired }}
This clears expired records from the django_session table when the user clicks on any link in the template after the session expires.
Even so, it is necessary to create a routine to clear expired records over a period longer than one day. This is necessary to clear logs when user closes browser with open sessions.
I used Django 3.2.4
Upvotes: 0
Reputation: 7858
Django does NOT provide automatic purging. There is however a handy command available to help you do it manually: Django docs: Clearing the session store
python manage.py clearsessions
Upvotes: 66
Reputation: 3217
On my development server
, I prefer a database command over python manage.py clearsessions
because you delete all sessions, not just the expired ones (here: MySQL). To login into your database and do:
truncate table django_session;
BTW, session
is not a database, but a table (django_session) and an app (django.contrib.sessions
).
Upvotes: 3
Reputation: 2178
python manage.py clearsessions
python manage.py cleanup
from django.contrib.sessions.models import Session
Session.objects.all().delete()
Upvotes: 23