使用`request.POST or None`初始化Django表单是否为反模式?
Django中
request.POST or None是表单初始化的反模式吗? 有博客指出以下Django视图代码属于反模式:
def some_view(request): form = MyForm(request.POST or None) # …
我一直用这种写法简化视图代码,从未发现异常,但不清楚它会引发什么问题。请问这确实是反模式吗?如果是,原因是什么?
更新说明
博客提到:若POST请求无内容,request.POST or None会返回None,导致表单在POST请求下仍处于未绑定状态。但我有个疑惑:什么场景下request.POST会为空?
即使提交未填写任何内容的表单,request.POST也会包含QueryDict,例如:
<QueryDict: {'csrfmiddlewaretoken': ['1XvPLekeY3sWxcaKzOAXODQBCUCYCz0W0QYhseDkEMUgdUfuiw4Exhq05fH0DxZ1'], 'email': [''], 'screen_name': [''], 'password1': [''], 'password2': ['']}>
(假设表单包含上述字段)
我无法理解空POST请求导致表单未绑定的情况在实际场景中如何出现?用户怎样提交表单会让视图收到无内容的POST请求?
内容的提问来源于stack exchange,提问作者Matt
相关产品推荐
相关产品推荐

