匿名ユーザーデータを格納する私は、フォームの入力からユーザーおよび製品データを格納するDjangoのモデルがあります。もちろんDjangoは
def ProductSelection(request, template_name='product_selection.html'):
...
if user.is_authenticated():
user = request.user
else:
# deal with anonymous user info
project = Project.objects.create(
user=user,
product=form.cleaned_data["product"],
quantity=form.cleaned_data["product_quantity"],
)
を、これは認証済みユーザーのための罰金ですが、私も匿名を保存できるようにしたいですユーザープロジェクトを作成し、可能であれば最終的に登録して認証するときにそれらをユーザーに関連付けます。
私の考えは、name = some_variable(ランダムなハッシュと連結したタイムスタンプ?)で匿名ユーザーを作成し、そのユーザー名をセッションデータに保存することです。そのセッション変数が存在する場合は、そのユーザーのすべてのプロジェクト活動を記録するために使用されることを確認すると、ユーザー登録時にユーザーの実際の資格情報でプロジェクトを更新できるはずです。
これは過度に複雑で脆弱ですか?何千もの行のデータを不必要に保存する危険がありますか?この共通の問題に対する最適なアプローチは何でしょうか?
これに関するガイダンスは非常に高く評価されます。
私が過去に同様の問題に遭遇したとき、別の方向に戻る必要があるときに問題が発生します。ユーザーが複数のプロジェクトを持つことができ、どのセッションが2つの特定のプロジェクトを好きであったかなどのようにする必要がある場合 – JeffS
私の場合、匿名ユーザーデータをdbに格納し、セッションを通じて特定のユーザーに関連付けることもしたいと考えています。 'user = request.user'が匿名ユーザオブジェクトを返した場合、後でこの情報を登録時にユーザに結びつけることはできません。 –
その場合、私の最初の例では、 'session_key'値を保持するフィールドを追加し、匿名ユーザーが匿名で終わったときに、後で希望するProjectインスタンスを取得して新しいユーザーに関連付けることができます:-) –