用户会话对象在django的POST中不可用?

时间:2014-03-09 12:39:08

标签: python django forms session

我有一个用户提交数据的表单。其中一个字段是“作者”,我使用模板中的{{user}}变量自动填写,如果用户登录则会有用户名,如果没有则会有AnonymousUser。此{{user}}不是表单的一部分,只是文本。

当用户提交表单时,我需要查看哪个用户,或者这是否是提交数据的匿名用户,所以我会使用request.session ['user']但是这不起作用,因为用户密钥不可用。我尝试将request.session ['user']值设置为用户对象,但会话字典不接受对象,它表示它不是可序列化的JSON。

我虽然上下文处理器会将此用户变量添加到它也可用于视图,但它不是。我需要一个用户对象,而不仅仅是用户名和表单一起保存到数据库中。当它不是表单的一部分并且用户登录时,有没有办法提取用户对象?我需要将提交的数据与用户或匿名用户相关联,并且外键需要一个对象,我也认为在再次从数据库中提取数据时必须使用该对象。

我认为在这里发布任何代码都没有用,因为这是一个关于如何在帖子之后提取用户对象而不是特别是代码问题的问题。

2 个答案:

答案 0 :(得分:1)

您的视图获取请求对象,因此它具有“user”属性,因此=> request.user

如果您的问题是在表单中获取此用户对象,则可以覆盖表单的save方法,以便获取用户对象并使用它执行您需要的任何操作。

def save(self, user):
     # do something with user

并在调用方法时:

form.save(request.user)

答案 1 :(得分:0)

用户永远不在request.session。它直接在请求对象上request.user