Maison >développement back-end >Tutoriel Python >Comment gérer plusieurs formulaires sur une seule page Django ?

Comment gérer plusieurs formulaires sur une seule page Django ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-30 03:49:18997parcourir

How to Handle Multiple Forms on a Single Django Page?

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 :

  • URL séparées : Attribuez des URL distinctes à chaque formulaire. Cela entraîne plusieurs fonctions d'affichage gérant les formulaires individuellement.
  • Valeurs du bouton de soumission : Examinez les valeurs du bouton de soumission dans les données POST pour déterminer quel bouton a été utilisé.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn