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

Python 用户会话对象在django中的POST上不可用?,python,django,forms,session,Python,Django,Forms,Session,我有一个用户提交数据的表单。其中一个字段是“author”,我使用模板中的{{user}}变量自动填充它,如果用户登录,它将具有用户名,如果用户未登录,它将具有匿名用户。这个{{user}}不是表单的一部分,只是文本 当用户提交表单时,我需要查看哪个用户,或者这是否是提交数据的匿名用户,因此我想我会使用request.session['user'],但这不起作用,因为用户密钥不可用。我尝试将request.session['user']值设置为user对象,但会话字典不接受对象,它说它不可JSO

我有一个用户提交数据的表单。其中一个字段是“author”,我使用模板中的{{user}}变量自动填充它,如果用户登录,它将具有用户名,如果用户未登录,它将具有匿名用户。这个{{user}}不是表单的一部分,只是文本

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

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


我不认为在这里发布任何代码是有帮助的,因为这是一个如何在发布后提取用户对象的问题,而不是代码的具体问题。

用户从未处于
请求.会话中。它直接在请求对象上,作为
request.user

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

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

def save(self, user):
     # do something with user
调用该方法时:

form.save(request.user)

你现在有了更好的个人资料图片。Thumbsup:DI获取django用户对象,但我有另一个名为user的表的外键。不过,我现在确实将外键重命名为指向auth_user(稍后我可以切换到自定义用户模型),但django说,我不知道有任何定义为“auth_user”的内容,即使auth系统本身在数据库中创建并更新user的user db表也是如此。。所以我不能定义外键,这使得它无法保存到数据库…想法?我是否必须更改为自定义模型,或者我是否可以以某种方式为auth_用户定义一个外键?修复了外键,只是有点困惑,再次阅读auth文档,从而清除了关于外键的问题