すべてのセッション変数をクリアしようとしていますが、現在のユーザーをログアウトしません。
user = request.session.get('member_id', None)
request.session.flush()
request.session.modified = True
request.session['member_id'] = user
request.session.modified = True
これはサイトの他のユーザーにも影響しますか?
すべてのセッション変数をクリアしようとしていますが、現在のユーザーをログアウトしません。
user = request.session.get('member_id', None)
request.session.flush()
request.session.modified = True
request.session['member_id'] = user
request.session.modified = True
これはサイトの他のユーザーにも影響しますか?
Django 1.8 以降、 を呼び出すとflush()
、ユーザーはログアウトされます。ドキュメントから:
Django 1.8 で変更: セッション Cookie の削除は、Django 1.8 の新しい動作です。以前の動作は、Cookie でユーザーに返されたセッション キーの値を再生成することでした。
キーを削除できるようにしたいが、ユーザーがログインしたままにしたい場合は、手動で処理する必要があります。
for key in request.session.keys():
del request.session[key]
または、問題のある特定のキーを削除するだけです。
del request.session['mykey']
Python 2.x での shacker's 1dict.keys()
の改良として、辞書のキーのリスト コピーを返します。Python 3.x では、代わりに反復子を返します。イテレータのサイズを変更するのは賢明ではありません。バージョンセーフな実装では、リストへのキャストによりサイズの問題が回避されます
for key in list(request.session.keys()):
del request.session[key]
以前の回答では の使用が提案されてdict.viewkeys()
いましたが、python 3.x ではイテレータも返されます。