如果我们使用“或”发送参数给类创建了类的实例。
views.py
form_ = SchoolForm(request.POST or NONE)
form.py
class SchoolForm(forms.Form):
name = forms.CharField()
location = forms.CharField(required=False)
使用 form_ = SchoolForm(request.POST or NONE)
代替
form = SchoolForm()
if request.method == "POST":
form = SchoolForm(request.POST)
答案 0 :(得分:2)
or
是一个运算符,它只计算其中一个操作数。 SchoolForm
只能看到一个参数:request.POST
的值,如果它是“真实的”(即bool(request.POST)
评估为True
),否则为NONE
的值。
根据您的编辑,我认为您想要的是
form_ = SchoolForm(request.POST if request.method == "POST" else None)
(假设SchoolForm(None)
和SchoolForm()
相同)。
答案 1 :(得分:0)
首先,NONE
不是Python中的有效关键字/对象,它会引发解析错误,除非您已通过所述名称定义了变量。我认为你的意思是None
。
现在,为了回答你的问题,布尔表达式只返回它必须解析的最后一个值,如果or
是第一个真值。
>>> 0 or 1
1
>>> 1 or 0
1
>>> 0 or False
False
>>> {} or None
None
答案 2 :(得分:0)
or
运算符将首先选择变量,如果第一个变量属于None
,0
,""
等,则
class Main:
def __init__(self, x):
self.x = x
@property
def show(self):
print self.x
b = {'first':'done'}
c = {}
obj = Main(b or c)
obj.show
b['second'] = 'done'
# even after the class instantiate it will,
# still update the value of class variable.
obj.show
运算符将选择其他变量。
我还要指出的是,这些构造函数参数将通过引用调用,因此即使在声明之后在参数中进行的任何更改也会影响args的值(如果直接使用)。
{'first': 'done'}
{'second': 'done', 'first': 'done'}
$('input').on("change", function() { if ($('input[type="checkbox"].is(":checked")')) { alert("its checked"); } });