サイトアイコン 知的好奇心

Djangoのセッション設定

Djangoのセッション設定についてご紹介します。

条件

セッションを使用するための設定

デフォルトで以下の設定が記述されています。

# settings.py

INSTALLED_APPS = [
  'django.contrib.sessions',
]

MIDDLEWARE = [
  ‘django.contrib.session.middleware.SessionMiddleware',
]

セッションエンジンの種類

SESSION_ENGINEに以下のいずれかの値を指定することでセッションの持ち方を指定できます。
デフォルト値は「データベースを使ったセッション」’django.contrib.sessions.backends.db’です。

‘django.contrib.sessions.backends.db’

‘django.contrib.sessions.backends.file’

‘django.contrib.sessions.backends.cache’

‘django.contrib.sessions.backends.cached_db’

‘django.contrib.sessions.backends.signed_cookies’

参考

詳細は以下をご参照ください。

https://docs.djangoproject.com/ja/2.1/topics/http/sessions/#configuring-the-session-engine

例)ログインセッション

デフォルトではログイン毎にDBのdjango_sessionテーブルにレコードが追加されます。
ログアウトすると当該テーブルからレコードが削除されます。

よくある設定

セッション保持期間はデフォルトで2週間となっています。
settings.pyにSESSION_COOKIE_AGEを設定することで保持期間を指定できます。
また、SESSION_SAVE_EVERY_REQUESTをTrueとすることで何らかの操作が行われるたびにセッション有効期間を延長することができます。

# settings.py

# セッションの設定
SESSION_COOKIE_AGE = 600 # 10分
SESSION_SAVE_EVERY_REQUEST = True # 1リクエストごとにセッション情報を更新

セッションレコードの削除

ログアウトした場合はセッションレコードが削除されますが、セッション切れの場合はdjango_sessionテーブルにレコードが残ったままとなります。
放っておくとdjango_sessionにレコードがたまっていってしまいます。
そこで以下のコマンドで、定期的にレコードを削除することをお勧めします。
サーバーのクーロンに定期実行の設定を行うとよいでしょう。

manage.py clearsessions

参考

詳細は以下をご参照ください。

https://docs.djangoproject.com/ja/2.1/topics/http/sessions/#clearing-the-session-store
Django

クーロンの使い方は以下をご参照ください。

Ubuntuでのcronの使い方

モバイルバージョンを終了