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
Libérer: 2024-11-28 19:43:12
original
394 Les gens l'ont consulté

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()
Copier après la connexion

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')
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal