Django: очистка таблицы базы данных сеанса

Нужно ли очищать этот стол или Django позаботился об этом автоматически?

5 ответов

Решение

Django НЕ обеспечивает автоматическую очистку. Однако есть удобная команда, которая поможет вам сделать это вручную: https://docs.djangoproject.com/en/dev/topics/http/sessions/

python manage.py clearsessions
  1. Джанго 1.6 или выше

    python manage.py clearsessions

  2. Джанго 1,5 или ниже

    python manage.py cleanup

  3. Из Джанго Шелл

    from django.contrib.sessions.models import Session

    Session.objects.all().delete()

  4. 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.

Другие вопросы по тегам