当前位置: 代码迷 >> python >> 用户会话对象在Django的POST上不可用?
  详细解决方案

用户会话对象在Django的POST上不可用?

热度:86   发布时间:2023-07-14 08:47:45.0

我有一个用户在其中提交数据的表格。 字段之一是“作者”,我通过使用模板中的{{user}}变量自动填写,如果用户已登录,它将具有用户名,否则,将具有AnonymousUser。 这个{{用户}}不是表单的一部分,只是文本。

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

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

我认为在此处发布任何代码没有帮助,因为这是关于发布后如何提取用户对象的问题,而不是代码的问题。

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

如果您的问题是在窗体中获取此用户对象,则可以覆盖窗体的save方法,以便它获取用户对象并对其进行所需的操作。

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

并在调用方法时:

form.save(request.user)

用户永远不会处于request.session 它以request.user的形式直接位于请求对象上。

  相关解决方案