14

認証された両方のユーザーのユーザーの製品選択を記録する Django アプリがあります。私の意図はrequest.session.session_key、ユーザーが後で登録することを決定した場合に、匿名データをユーザーに関連付けるために変数を使用することです。

匿名ユーザーデータを保存するDjango

ただし、ユーザーがログイン/登録するとセッションキーが変更されるため、セッションキーをユーザーに関連付けることができなくなります。これは Django セッション フレームワークの正しい動作ですか。私が探している機能を実現する確実な方法はありますか?

どんな助けでも大歓迎です。

4

3 に答える 3

12

settings.py で

SESSION_ENGINE = 'youapp.session_backend'

ディレクトリ youapp 内 ファイル session_backend.py 内

from django.contrib.sessions.backends.db import SessionStore as DbSessionStore

class SessionStore(DbSessionStore):
    def cycle_key(self):
        pass

ログイン後にセッションが変更されない

于 2013-02-07T17:22:50.367 に答える
1

解決策の 1 つは、セッション ストア内の古いセッション データを更新することです。

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from django.contrib.sessions.backends.db import SessionStore as DbSessionStore
from shop.models.cart import Cart


class SessionStore(DbSessionStore):
    def cycle_key(self):
        old_session_key = super(SessionStore, self).session_key
        super(SessionStore, self).cycle_key()
        self.save()
        Cart.objects.filter(session_key=old_session_key).update(session_key=self.session_key)
于 2018-04-04T14:52:42.383 に答える