【Django】セッションの使い方

アイキャッチ画像
  • Djangoにおけるセッションの使い方とは?
  • セッションを使ってデータのやりとりをするには?

本記事ではこのような疑問を解決します。


セッションとはWebアプリとWebブラウザが一定時間結びつく仕組みのことです。

セッションを使えば、ログイン・ログアウト機能を実装できたり、複数ページにわたってデータを保持したりすることができます。

では、Djangoでのセッションはどのように使用するのでしょうか?


そこで今回はDjangoにおけるセッションの使い方を解説していきます。

Djangoにおけるセッションの設定

セッションを有効にする

まずはDjangoでのセッションを有効にします。

基本的にDjangoではデフォルトでセッションが有効になっています。

settings.pyにおいて、INSTALLED_APPSとMIDDLEWAREの中に以下の記述があることを確認しましょう。

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

MIDDLEWARE = [
   'django.contrib.sessions.middleware.SessionMiddleware',
]

セッションの保存場所

Djangoではセッションの保存場所を以下の4つから指定できます。

・データベース
→’django.contrib.sessions’

・キャッシュ
→”django.contrib.sessions.backends.cache”

・ファイル
→”django.contrib.sessions.backends.file”

・クッキー
→”django.contrib.sessions.backends.signed_cookies”

デフォルトの保存場所はデータベースです。
※django.contrib.sessions.models.Sessionを用いる

セッションの保存場所をデータベース以外に指定したい場合は、settings.pyにおいて別途以下のような記述をします。

SESSION_ENGINE = 'django.contrib.sessions.backends.cache'# キャッシュに指定する場合

Djangoにおけるセッションの使い方

Djangoにおけるセッションの使い方を一覧にしました。

セッションにデータを保存する

request.session['key'] = value

セッションからデータを取得する

item = request.session['key']

セッションに保存したデータを削除する

del request.session['key']

セッションのkeyを一覧で取得する

keys = request.session.keys()

セッションのkeyの有無を確認する

if 'key' in request.session:
# 主にif文で使用する

セッションをクリアする

request.session.clear()

セッションを切り離す

request.session.flush()

セッションの有効期限を設定する

request.session.set_expiry(600)
# 単位は秒
# この場合は600秒→10分となる

まとめ

以上がDjangoにおけるセッションの使い方になります。


Webアプリを開発する上でセッションを使った機能実装は必須と言って良いでしょう。

特にアクセス制限やデータ保持について抜群に便利なのがセッションです。

そして、Djangoにおいては簡単な記述でセッションを扱うことができるので、活用してみてください。


本記事が、少しでもStripeを用いたWebアプリ開発の手助けになれれば幸いです。