1

假设我有一个用户可以贡献内容的网站。

如果用户是匿名的,并且贡献了,并且在他们的会话过期后返回,那么他们的贡献将记入 Anonymous。

如果用户是匿名的,并且贡献了内容,然后创建了一个帐户,我如何才能将用户在此会话期间的所有贡献记入用户帐户?

4

3 回答 3

2

我更喜欢将发布的内容 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)

至于记入已过期会话的用户,我不知道。

于 2011-10-27T14:16:30.927 回答
1

这种模式通常称为“延迟注册”或“延迟注册”。有一个 Django 应用程序支持这种类型的功能http://pypi.python.org/pypi/django-lazysignup/虽然我从未亲自使用过它。

于 2011-10-27T13:47:10.737 回答
0

可能您可以将会话 ID 存储为贡献内容(属性)的一部分,并在注册过程中针对该会话 ID 运行检查。

于 2011-10-27T13:39:06.487 回答