このテーブルはパージする必要がありますか、それともDjangoによって自動的に処理されますか?
5 に答える
Djangoは自動パージを提供していません。ただし、手動で行うのに役立つ便利なコマンドがあります。Django docs:セッションストアをクリアする
python manage.py clearsessions
- Django1.6以降
python manage.py clearsessions
- Django1.5以下
python manage.py cleanup
- DjangoShellから
from django.contrib.sessions.models import Session Session.objects.all().delete()
- django-session-cleanup cornJob
私の場合、期限切れのセッション(ここではMySQL)だけでなく、すべてのセッションを削除するためdevelopment server
、データベースコマンドよりもデータベースコマンドの方が好きです。python manage.py clearsessions
データベースにログインして実行するには:
truncate table django_session;
ところで、session
これはデータベースではなく、テーブル(django_session)とアプリ(django.contrib.sessions
)です。
私はこの投稿が古いことを知っていますが、私はこのコマンド/属性を試しました、そしてそれは私のために働きました。
'base.html'ファイルに、次のように挿入しました:{{request.session.clear_expired}}
これにより、セッションの有効期限が切れた後にユーザーがテンプレート内のリンクをクリックすると、期限切れのレコードがdjango_sessionテーブルからクリアされます。
それでも、1日より長い期間にわたって期限切れのレコードをクリアするルーチンを作成する必要があります。これは、ユーザーが開いているセッションでブラウザを閉じたときにログをクリアするために必要です。
Django3.2.4を使用しました
その他の方法:
私はDjango3.2を使用していますが、django-auto-logoutパッケージを使用することをお勧めします。
これにより、アクティブ時間とアイドル時間のセッション制御が可能になります。
テンプレートでは、Javascriptと一緒に変数を使用できます。