【Django】セッション(session)を使用してviewsでデータを扱う

Djangoのセッション(session)が使用できるようになれば、開発の幅も非常に広がります。

そんなセッションの使い方を紹介します。

セッションとは

そもそもセッションとはの話になりますが、通信の開始から終了までを指します。

クライアントからサーバーへ接続した時点からセッションは始まり、サーバーから切断するとセッションが終了し、この一連の流れがセッションといいます。

環境

環境

・django 2.2

settings.pyでセッションを有効にする

セッションを利用するには、settings.pyに設定内容を記述する必要があります。

基本的にはDjangoをインストールしてプロジェクトを立ち上げた時に、デフォルトで記述はされていますが、もしその後の開発等で誤って削除してしまった可能性もなきにしもあらずなので、ない場合は記述してください。

「INSTALLED_APPS」に「django.contrib.sessions」を、「MIDDLEWARE」に「django.contrib.sessions.middleware.SessionMiddleware」を記述します。

settings.py

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

    'django.contrib.sessions.middleware.SessionMiddleware',
    .
    .
]

views.pyでセッションを使用する

想定としてviews.pyにあるデータをセッションに保存したいと考えます。

セッションの存在を確認して保存する

早速使用していきますが、下記にあるsession_dataという名前は単なる変数名なので好きに命名してもらって構いません。

views.py

def sample_test(request):
    # セッションの保存
    if not 'session_data' in request.session:
        username = 'Tom'
        request.session['session_data'] = username
  1. 3行目で、もしセッションに’session_data’がなければ以下の処理を実行する
  2. 4行目でusernameという変数に、’Tom’を格納
  3. 5行目で’session_data’というセッションに、usernameこと’Tom’を保存する

以上が基本的な保存処理になります。

保存に関しては、jsonのような書き方しか保存できません。

保存できる例)

[
    {"username": "Tom"},
    {"age": "23"}
]

つまりDjangoで言えばPythonの辞書型、リストの内部の辞書型のバリューにリストを保存するような値は保存できません。

保存できない例)

[
    {"groupuser": ["Tom", "Chris", "Naomi"]},
    {"age": "23"}
]

辞書型ライクなセッションの保存のコードは以下になります。

request.session['session_array_data'] = dict("username"="Micheal", "age"="26")

セッションを読み込む

セッションを存在する場合は以下のようにしてセッションを読み込んで変数として扱えます。

var_session = request.session['session_data']

セッションを削除する

セッションを削除する場合は以下のコードを記述します。

del request.session['session_data']

セッションクリアする

セッションの削除が、指定して削除するのに対してセッションクリアはセッションを綺麗さっぱり全セッションを削除します。

request.session.clear()

以上になります。

その他補足

デフォルトではDjangoのセッションは2週間保存されます。

最後に

いかがでしたでしょうか。

以上が、「【Django】セッション(session)を使用してviewsでデータを扱う」の紹介記事になります。

プログラミング学習を効率良く進めるには…

私ヒロヤンがプログラミングを始めた頃は以下のような感じでした。

何から手をつけていいのか、わからない。

プログラミングを始めてみたけど、エラーが解決できない。

そしてネットで調べていくうちに膨大な時間が過ぎていきました。

私ヒロヤンの実体験より、プログラミングを効率的に学ぶために大切なことは以下のことだと考えています。

1. いつまでもダラダラとやらないで、目標を決定して短期集中する

2. マンツーマンで、わからない箇所は直ぐに質問をして即レスをもらう

.proでは私ヒロヤンが学習してきたプログラミング経験0からのpython/django、その他webサイト・サービス開発のコースが用意されています。

カウンセリング自体は無料なので話を聞いてみるだけでもいかがでしょうか?

また以下のリンク先ではdjangoを教えてくれるスクールをまとめ紹介しています。

コメントを残す

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です