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

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

Linda Hamilton
Linda Hamiltonoriginal
2024-11-28 19:43:12463parcourir

How to Handle Multiple Forms on a Single Page in Django?

Gestion de plusieurs formulaires sur une seule page dans Django

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.

Distinguer les soumissions de formulaire

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.

Implémentation à l'aide des valeurs du bouton de soumission

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!

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