gpt4 book ai didi

Django 存储匿名用户数据

转载 作者:行者123 更新时间:2023-11-28 19:37:42 25 4
gpt4 key购买 nike

我有一个 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"],
)

当然这对经过身份验证的用户来说很好,但我也希望能够存储匿名用户项目,如果可能的话,在他们最终注册和身份验证时将它们与用户相关联。

我的想法是创建名称为 some_variable 的匿名用户(时间戳与随机散列连接?),然后将该用户名保存在 session 数据中。如果我确保该 session 变量(如果存在)用于记录该用户的所有项目事件,我应该能够在用户注册时使用用户的真实凭据更新项目。

这是否过于复杂和脆弱?我是否冒着不必要地保存数千行数据的风险?这个常见问题的最佳方法是什么?

任何关于这方面的指导将不胜感激。

最佳答案

您可以使用 Django's session framework存储匿名用户数据。

然后您可以向您的 Project 模型添加一个字段来保存匿名用户的 session_key 值,

project = Project.objects.create(
user=request.user, # can be anonymous user
session=request.session.session_key,
product=form.cleaned_data["product"],
quantity=form.cleaned_data["product_quantity"])

或者简单地存储 Project 实例将在 session 中拥有的所有数据

if user.is_authenticated():
project = Project.objects.create(
user=request.user,
product=form.cleaned_data["product"],
quantity=form.cleaned_data["product_quantity"])
else:
# deal with anonymous user info
request.session['project'] = {
"product": form.cleaned_data["product"],
"quantity": form.cleaned_Data["product_quantity"]}

您可以稍后在创建适当的用户时从 session 中检索数据。

关于Django 存储匿名用户数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13938805/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com