虽然这与django有关,但它实际上只是一个通用的编程效率问题。
我有一个模板,根据场景,将获得并返回一个或两个表单。如果它返回一个表单,则保存第二个表单的变量将为None。
我需要检查表单是否有效。与an example I read online类似,我在同一if语句中检查两个表单上的.is_valid()。但是,如果第二种形式为None,则毫无疑问会抛出错误(NoneType对象没有属性is_valid)。
如果第二种形式为无,则检查两种表单是否有效而不会导致错误的最佳方法是什么?
if request.method == 'POST':
form = form_dict[modelname][1](request.POST)
try:
form_two = form_dict[modelname][2](request.POST)
except:
form_two = None
if form.is_valid() and form_two.is_valid():
# Do some stuff and save the data from the form(s)
else:
try:
form = form_dict[modelname][1]()
form_two = form_dict[modelname][2]()
except:
form_two = None
答案 0 :(得分:4)
在检查某些内容是否为None
的一般情况下..只需检查一下吗?
if x is not None and x.is_valid():
...
在Python中,or
和and
都short circuit,这意味着在x and y
表达式y
中,如果x
是false
,则不会对y
进行评估{{1}}(因为无论{{1}}是什么,表达式都是假的。)