Parfois, nous faisons deux formulaires ou plus en une page qui résultent de sortie ou d'erreur inutile. Pour traiter ce problème, nous devons mettre en valeur unique de chaque formulaire.

Solutions :

Nous allons commancer à modifier votre template.
 
#page.html
 
<form method="POST">
    {{form1.as_p}}
    <input type="hidden" name="action" value="first">
    <input type="submit" value="Submit">
</form>
 
<form method="POST">
    {{form2.as_p}}
    <input type="hidden" name="action" value="second">
    <input type="submit" value="Submit">
</form>
 
<form method="POST">
    {{form3.as_p}}
    <input type="hidden" name="action" value="third">
    <input type="submit" value="Submit">
</form>
Remarquez que j'ai mis dans chaque formulaire <input type="hidden" name="action"> qui a une valeur différente (premier, deuxième, troisième). Cette valeur cachée sera utilisé dans les vues.
 
Maintenant, nous allons modifier le traitement dans la vue.
 
#views.py
 
def myview(request):
    if request.method == 'POST':
        if request.POST['action'] == 'first':
            //do stuff here for form1
        
        elif request.POST['action'] == 'second':
            //do stuff here for form2
            
        elif request.POST['action'] == 'third':
            //do stuff here for form3
            
    return render(request, 'mypage.html')
 
De cette façon, le système saura quelle forme doit être procédé. 
Il ne s'agit que d'un échantillon de base. Il existe de nombreuses façons de traiter ce genre de problème.
  • Partager
  • Url: http://www.duhaz.fr/blog/comment-gerer-plusieurs-formulaires-dans-une-vue/