未经身份验证的用户的会话管理

时间:2011-06-18 09:47:31

标签: session django-models forms-authentication

我对会话管理有一个奇怪的问题。

我实现了一个表单链,在表单完成后,模型会保存到数据库中,但该模型包含create_userupdate_user等字段。

为了填充这些user字段,当然应该有一个经过身份验证的用户。但是,我的表单链也可以由匿名用户填写。

如果该匿名用户在其会话刷新之前注册或登录系统,则应将user_id分配给create_userupdate_user字段。

实施此类系统的最佳方法是什么?

我希望我能解释一下情况。

由于

2 个答案:

答案 0 :(得分:1)

保存模型后,将模型实例保存到会话中的列表中,例如:

views.py:

...
form = DataForm(request.POST)
if form.is_valid():
    instance = form.save()
    instances = request.session.get('filed_instances', [])
    instances.append(instance)
    request.session['filed_instances'] = instances
登录后登录方法中的

(取决于您的实施情况)您可以按如下方式更新这些内容:

instances = request.session.get('filed_instances')
if instances:
    for instance in instances:
        instance.create_user = request.user
        instance.update_user = request.user
        instance.save()

答案 1 :(得分:0)

将您登录的用户名放在会话变量中。在会话开始时,如果未设置该变量,请将其设置为空字符串,null或表示匿名用户的任何其他值。在数据库中保存数据时,请使用该名称作为创建/更新用户名。 我希望它有用:)