Django: очистка таблицы базы данных сеанса
Нужно ли очищать этот стол или Django позаботился об этом автоматически?
5 ответов
Django НЕ обеспечивает автоматическую очистку. Однако есть удобная команда, которая поможет вам сделать это вручную: https://docs.djangoproject.com/en/dev/topics/http/sessions/
python manage.py clearsessions
Джанго 1.6 или выше
python manage.py clearsessions
Джанго 1,5 или ниже
python manage.py cleanup
Из Джанго Шелл
from django.contrib.sessions.models import Session
Session.objects.all().delete()
django-сессия- уборка кукурузы
На моем development server
Я предпочитаю команду базы данных python manage.py clearsessions
потому что вы удаляете все сеансы, а не только просроченные (здесь: mysql). Так что войдите в свою базу данных и сделайте:
truncate table django_session;
КСТАТИ, session
это не база данных, а таблица (django_session) и приложение (django.contrib.sessions).
Другой метод:
Я использую Django 3.2 и рекомендую использовать пакет django-auto-logout .
Это позволяет контролировать активное время и время простоя сеанса.
В шаблоне вы можете использовать переменные вместе с Javascript.
Я знаю, что этот пост устарел, но я попробовал эту команду/атрибут, и это сработало для меня.
В файл base.html я вставил:{{ request.session.clear_expired }}
Это очищает записи с истекшим сроком действия из таблицы django_session, когда пользователь щелкает любую ссылку в шаблоне после истечения срока действия сеанса.
Тем не менее, необходимо создать процедуру для очистки записей с истекшим сроком действия за период, превышающий один день. Это необходимо для очистки журналов, когда пользователь закрывает браузер с открытыми сессиями.
Я использовал Джанго 3.2.4.