Gestion de plusieurs formulaires sur une seule page dans Django
Lorsque vous travaillez avec plusieurs formulaires sur un seul modèle Django, il est essentiel de déterminer quel formulaire est soumis pour éviter de traiter les deux formulaires simultanément. Le principal défi réside dans l'identification du formulaire souhaité dans les données POST.
Options de formulaire multiples
Il existe plusieurs approches pour résoudre ce problème :
Exemple de solution
Considérons le scénario suivant où nous avons deux formulaires sur une page : forme de phrase attendue et forme de phrase interdite. Pour gérer leur soumission, nous utilisons le code suivant :
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')
Dans cet exemple, nous vérifions les données POST pour les valeurs du bouton de soumission. En fonction de la valeur, nous instancions le formulaire correspondant et tentons de le sauvegarder. Le préfixe garantit que les données soumises sont correctement liées au formulaire.
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!