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