问题描述
采用or
在这种情况下,不计算为True
或False
,但回报的对象之一。
请记住,这or
是从左到右评估的。
当的QueryDictrequest.POST
是空的,它需要一个Falsy值,因此关于该项目 RHS
所述的or
操作被选择(即None
),并且形式而不初始化 香草 参数(即,None
):
form = MyModelForm()
否则,当request.POST
不为空时,使用QueryDict初始化表单:
form = MyModelForm(request.POST)
解决方法
背后的逻辑是request.POST or None
什么?除了Django,我在Python项目中从未见过这样的事情。
由于or
operator返回的是 True 或 False
值,如果request.POST
不是None
,则怎么可能Form
知道它并将post作为参数?
form = MyModelForm(request.POST or None)
实际上,结果应为Form(True)
if request.POST
not None
,否则为Form(False)
。
这个怎么运作?