即使请求中不存在 self.data 中的键,也会获取错误值
Getting False value for a key in self.data even when it is not present in the request
我在 UI 中有 2 个单选按钮,一个用于设置变量 (ng-model) 说 selected
为 true
(ng-value=true) 和另一个将其设置为 false
(ng-value=false)。 Now, when none of them is selected it results in the variable selected
being absent from the outgoing request (as expected).
但是,当处理 Django Forms 时,clean()
方法中的 the self.data
字典在访问 self.data.get('selected')
/ self.data['selected']
时给出 False
为什么是这么?它不应该是 None
或至少在实际请求中甚至不存在时给出 key-error
吗?
请注意,变量 'selected' 实际上是具有 default=False
的 Django 模型中的一个字段,是否是该行为的原因?考虑到更改 Django 模型字段不是一个选项,我该如何避免这种情况?
所以前几天我通过检查原始 request.body
中的 selected
键来处理它。现在,由于它是一个字符串,我不得不将它解析为一个字典,然后使用 :
访问提到的键
json.loads(request.body).get('selected')
这样,如果在选择 none 个单选按钮时 selected
根本不存在,我会得到 None
。同样,如果选择了 ng-value=true
的单选按钮,那么我会得到 True
,反之亦然。
我在 UI 中有 2 个单选按钮,一个用于设置变量 (ng-model) 说 selected
为 true
(ng-value=true) 和另一个将其设置为 false
(ng-value=false)。 Now, when none of them is selected it results in the variable selected
being absent from the outgoing request (as expected).
但是,当处理 Django Forms 时,clean()
方法中的 the self.data
字典在访问 self.data.get('selected')
/ self.data['selected']
时给出 False
为什么是这么?它不应该是 None
或至少在实际请求中甚至不存在时给出 key-error
吗?
请注意,变量 'selected' 实际上是具有 default=False
的 Django 模型中的一个字段,是否是该行为的原因?考虑到更改 Django 模型字段不是一个选项,我该如何避免这种情况?
所以前几天我通过检查原始 request.body
中的 selected
键来处理它。现在,由于它是一个字符串,我不得不将它解析为一个字典,然后使用 :
json.loads(request.body).get('selected')
这样,如果在选择 none 个单选按钮时 selected
根本不存在,我会得到 None
。同样,如果选择了 ng-value=true
的单选按钮,那么我会得到 True
,反之亦然。