Dans Django, la gestion de plusieurs formulaires sur une seule page nécessite une attention particulière. L'approche typique pour gérer un seul formulaire, comme illustré ci-dessous :
if request.method == 'POST': form = AuthorForm(request.POST,) if form.is_valid(): form.save() # do something. else: form = AuthorForm()
devient inadéquate lorsqu'il s'agit de plusieurs formulaires. Pour résoudre correctement ce scénario, la vue doit déterminer quel formulaire a été soumis.
Une approche consiste à inclure des valeurs de bouton de soumission uniques pour chaque formulaire. En analysant les données POST, la vue peut identifier le bouton de soumission cliqué et traiter le formulaire correspondant.
Par exemple, considérons deux formulaires nommés Expectphraseform et Banphraseform avec des boutons de soumission nommés respectivement expression attendue et expression interdite. L'extrait de code suivant illustre comment gérer plusieurs formulaires à l'aide des valeurs du bouton d'envoi :
if request.method == 'POST': if 'bannedphrase' in request.POST: bannedphraseform = BannedPhraseForm(request.POST, prefix='banned') if bannedphraseform.is_valid(): bannedphraseform.save() expectedphraseform = ExpectedPhraseForm(prefix='expected') elif 'expectedphrase' in request.POST: expectedphraseform = ExpectedPhraseForm(request.POST, prefix='expected') if expectedphraseform.is_valid(): expectedphraseform.save() bannedphraseform = BannedPhraseForm(prefix='banned') else: bannedphraseform = BannedPhraseForm(prefix='banned') expectedphraseform = ExpectedPhraseForm(prefix='expected')
En utilisant des valeurs de bouton d'envoi uniques, la vue peut différencier efficacement les soumissions de formulaire et traiter le formulaire prévu en conséquence.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!