Par exemple, lorsque vous souhaitez vérifier si plusieurs formulaires sont correctement saisis dans django, pourquoi ne pas l'écrire simplement sous la forme suivante?
foo_form = HogeForm(request.POST, prefix="FooForm")
bar_form = FooForm(request.POST, prefix="BarForm")
if foo_form.is_valid() and bar_form.is_valid():
#Traitement approprié
pass
else:
pass
Même avec cela, il est possible de récupérer l'erreur si l'une des formes est de la mousse pour le moment, mais le problème est si les deux formes sont de la mousse. À ce moment-là, ne supposez pas que is_valid () de bar_form est en cours d'exécution.
Pour faire simple, dans le cas de Python, dans le cas de la formule de jugement reliée par et, l'évaluation n'est pas exécutée après le premier False. Écrivons un code simple.
# -*- 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."
Dans ce cas, "Call: return_True" était affiché deux fois et "Call: return_False" était affiché une seule fois. L'exécution de la dernière fonction a été ignorée. C'est parce que * et une fois que False apparaît, le tout devient False *. Donc, pour omettre des ressources, ce sera comme "Alors, c'est faux" sans vérifier d'autres choses. (De même, une fois que True apparaît pour ou, le jugement suivant est ignoré.)
Le plus simple est de préparer une variable. Par exemple?
# -*- 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."
De cette façon, "return_True" sera également affiché trois fois.
En premier lieu, lorsque le comportement est entrelacé avec d'autres méthodes en partant du principe qu'une méthode est appelée, ou lors de l'utilisation d'une méthode qui retourne Boolean après le traitement avec la méthode avec if etc., comme ci-dessus, La méthode que vous pensez "devrait être en cours d'exécution!" N'est pas en cours d'exécution.