For example, when you want to check if multiple Forms are entered properly in django, why not write it in the following simple form?
foo_form = HogeForm(request.POST, prefix="FooForm")
bar_form = FooForm(request.POST, prefix="BarForm")
if foo_form.is_valid() and bar_form.is_valid():
#Appropriate processing
pass
else:
pass
Even with this, it is possible to retrieve the error if either form is moss for the time being, but the problem is if both forms are moss. At that time, do not assume that is_valid () of bar_form is executed.
The simple story is that in the case of Python, in the case of the judgment formula connected by and, the evaluation is not executed after the first False. Let's write a simple code.
# -*- coding: utf-8 -*-
def return_True():
print "Call: return_True"
return True
def return_False():
print "Call: return_False"
return False
if return_True() and return_True() and return_False() and return_True():
print "All True ?"
else:
print "Not all True."
In this case, "Call: return_True" was displayed twice and "Call: return_False" was displayed only once. The execution of the last function has been skipped. This is because * and once False appears, the whole becomes False *. So, in order to omit resources, it will be like "Then, that's False" without checking other things. (Similarly, once true appears for or, the subsequent judgment is skipped.)
The simplest is to prepare a variable. For example?
# -*- coding: utf-8 -*-
def return_True():
print "Call: return_True"
return True
def return_False():
print "Call: return_False"
return False
one_return_True = return_True()
two_return_True = return_True()
three_return_False = return_False()
forth_return_True = return_True()
if (one_return_True and
two_return_True and
three_return_False and
forth_return_True):
print "All True ?"
else:
print "Not all True."
This way, "return_True" will also be displayed three times.
In the first place, when the behavior is entwined with other methods on the premise of calling some method, or when using a method that returns a Boolean after processing with a method with if etc., like the above, The method that you think "should be running!" Is not running.