假设我有一个用户可以贡献内容的网站。
如果用户是匿名的,并且贡献了,并且在他们的会话过期后返回,那么他们的贡献将记入 Anonymous。
如果用户是匿名的,并且贡献了内容,然后创建了一个帐户,我如何才能将用户在此会话期间的所有贡献记入用户帐户?
假设我有一个用户可以贡献内容的网站。
如果用户是匿名的,并且贡献了,并且在他们的会话过期后返回,那么他们的贡献将记入 Anonymous。
如果用户是匿名的,并且贡献了内容,然后创建了一个帐户,我如何才能将用户在此会话期间的所有贡献记入用户帐户?
我更喜欢将发布的内容 ID 存储在会话中。
您的内容中没有存储额外的数据。虚假用户的名单永远不会增长。
最重要的是,您的设计模式保持简单。从字面上看,几行代码和 django 其余部分的行为不变。简单很重要!
# registration_view
if form.is_valid():
user = form.save()
posted_content = request.session.get('posted_content')
if posted_content:
Content.objects.filter(id__in=posted_content).update(user=user)
至于记入已过期会话的用户,我不知道。
这种模式通常称为“延迟注册”或“延迟注册”。有一个 Django 应用程序支持这种类型的功能http://pypi.python.org/pypi/django-lazysignup/虽然我从未亲自使用过它。
可能您可以将会话 ID 存储为贡献内容(属性)的一部分,并在注册过程中针对该会话 ID 运行检查。