Form背后的逻辑(request.POST或None)

时间:2016-07-07 17:39:45

标签: python django

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)

它如何运作?

1 个答案:

答案 0 :(得分:6)

在这种情况下,or的使用不会评估为TrueFalse,而是返回其中一个对象。

请注意,or从左到右进行评估。

当QueryDict request.POST为空时,它会采用Falsy值,因此选择了or操作的 RHS 上的项目(None ),并且在没有 vanilla 参数的情况下初始化表单(即使用None):

form = MyModelForm()

否则,当request.POST不为空时,使用QueryDict初始化表单:

form = MyModelForm(request.POST)