当前位置: 首页 > 面试题库 >

django:如何在ModelForm中访问当前请求用户?

商天逸
2023-03-14
问题内容

在执行ModelForm时,我想根据当前用户是否为超级用户执行不同类型的验证检查。如何访问当前的请求用户?


问题答案:

您可以将用户对象作为额外的参数传递给表单构造函数。

例如

f = MyForm(user=request.user)

构造函数将如下所示:

class MyForm(forms.ModelForm):
    def __init__(self, *args, **kwargs):
         self.user = kwargs.pop('user',None)
         super(MyForm, self).__init__(*args, **kwargs)

然后根据需要在clean_XX表单中使用user



 类似资料:
  • 问题内容: 我有与请求对象或用户对象进行交互的Django代码。例如: 如果要使用django python shell进行测试或在单元测试中进行测试,您将在其中传递什么?这里只是一个User对象即可,但是对模拟请求对象的需求也经常出现。 对于外壳或单元测试: 您如何嘲笑用户? 您如何模拟请求? 问题答案: 对于请求,我将使用Django随附的RequestFactory。 对于用户,我将按照@o

  • 我正在编写一个处理多个系统的应用程序。用户可以选择他想使用的系统,我将该系统ID存储在会话(客户端会话)中 现在我有了服务类,比如说CustomerService。 我想使用 Guice 将客户实例注入控制器。但是我想使用存储在会话中的系统ID实例化客户服务。 如何访问<code>请求。Guice模块中的会话? 编辑: 简化了我上面的代码。我的实际代码使用接口。我如何使用辅助注射? 这给了我:客户

  • 问题内容: 从v2.0开始,Elasticsearch默认情况下仅在localhost上侦听,但我想在localhost之外发出请求。 例如,允许这样的请求: 但这不是: (从服务器外部,例如:同一LAN中的本地计算机)。 谢谢你的帮助。 问题答案: 在放

  • 问题内容: 说我的内容如下: 即有多个,每个都有一个和的范围。每个数据库都应有一个从其父数据库中选择的基础,而不是另一个。 创建用于添加的表单时,我想删除选择(因为已经通过页面上的“添加客户端”按钮Rate选择了该选项),并且也将选择限制于此。 我该如何在Django 1.0中做到这一点? 目前,我当前的文件只是样板文件: 而且也是基本的: 在Django 0.96中,我能够通过在渲染模板之前进行

  • 我正在编写一个自定义中间件,它为每个请求生成一个加密签名(它与AWS API v4使用的身份验证机制非常相似)。为了正确生成此签名,我必须获取HTTP请求的整个原始正文。 我还使用BodyParser,它是在我的自定义中间件之后注册的。 我的自定义中间件可以这样表示: 这就是我在服务器上使用它的方式。 正如您可以验证的那样,中间件已将原始主体成功写入控制台,但请求将永远不会由注册的路由处理,连接将

  • 我正在向使用django rest框架生成的API发送post请求: 在我的rest框架视图中,我想获取Costam头,如果自定义头满足一个条件,我将继续分析我的post数据。 好的,我的观点如下: 我正试图根据请求查找我的自定义标题。元元素,但当我打印请求时。梅塔,我有500个错误。如果我打印请求。数据,我得到了预期的响应。 使用django rest框架在我的帖子请求上获得自定义标题的方法是什