request.POST or None
背后的逻辑是什么?除了Django,我在Python项目中没有看到这样的东西。
由于or
运算符返回 True 或 False 值,如果request.POST
不None
,Form
怎么可能知道它并作为参数发布?
form = MyModelForm(request.POST or None)
事实上,如果结果不是None
request.POST
,结果应该是Form(True)
的,否则Form(False)
。
它是如何工作的?
在这种情况下使用 or
不会计算为 True
或 False
,而是返回其中一个对象。
请记住,or
是从左到右评估的。
当 QueryDict request.POST
为空时,它采用 Falsy 值,因此选择or
操作的 RHS 上的项目(None
),并且表单初始化时没有原版参数(即使用 None
form = MyModelForm()
否则,当request.POST
不为空时,将使用 QueryDict 初始化表单:
form = MyModelForm(request.POST)