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

Barbara Streisand
Libérer: 2024-11-19 04:22:02
original
762 Les gens l'ont consulté

How Can I Handle Multiple Forms on a Single Django Page?

Gestion de plusieurs formulaires sur une seule page Django

Lorsque vous travaillez avec plusieurs formulaires sur une seule page de modèle Django, identifier quel formulaire a été soumis peut être un défi. Cette question aborde le problème et fournit une solution à l'aide de préfixes de formulaire.

Si un seul formulaire est utilisé, l'approche standard consiste à vérifier la méthode de demande et à traiter le formulaire en conséquence :

if request.method == 'POST':
    form = AuthorForm(request.POST,)
    if form.is_valid():
        form.save()
        # do something.
else:
    form = AuthorForm()
Copier après la connexion

Cependant, avec plusieurs formulaires, déterminer lequel traiter tout en ne recevant qu'un seul objet request.POST peut être délicat. La solution proposée dans cette question implique l'utilisation de préfixes de formulaire, permettant à la vue de différencier les formulaires.

La solution fournie crée deux instances de formulaire, une pour chaque formulaire attendu, puis inspecte les valeurs du bouton de soumission dans le POST. données. En utilisant des préfixes dans les noms de formulaires et les noms de boutons de soumission, le code peut déterminer quel formulaire a été soumis :

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

Cette approche gère efficacement plusieurs formulaires sur une seule page Django, garantissant que seul le formulaire prévu est traité. et validé.

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