Question

J'ai deux formes complètement différentes dans un seul modèle. Comment les traiter en une seule vue? Comment puis-je distinguer des formes qui a été soumis? Comment puis-je utiliser le préfixe pour acomplish qui? Ou peut-être il vaut mieux écrire des vues séparées?
ce qui a trait
chriss

Était-ce utile?

La solution

Personnellement, j'utiliser une vue à gérer POST de chaque formulaire.

Par contre, vous pouvez utiliser un élément d'entrée cachée qui indiquent quelle forme utilisée

<form action="/blog/" method="POST">
    {{ blog_form.as_p }}
    <input type="hidden" name="form-type" value"blog-form" /> <!-- set type -->
    <input type="submit" value="Submit" />
</form>

... 

<form action="/blog/" method="POST">
    {{ micro_form.as_p }}
    <input type="hidden" name="form-type" value"micro-form" /> <!-- set type -->
    <input type="submit" value="Submit" />
</form>

En vue comme:

def blog(request):
    if request.method == 'POST':
        if request.POST['form-type'] == u"blog-form":   # test the form type
            form = BlogForm(request.POST) 
            ...
        else:
            form = MicroForm(request.POST)
            ...

    return render_to_response('blog.html', {
        'blog_form': BlogForm(),
        'micro_form': MicroForm(),
    })

... mais encore une fois, je pense que d'une vue par la forme (même si la vue n'accepte que POSTs) est plus simple que d'essayer de faire ce qui précède.

Autres conseils

comme dit Ayaz, vous devez donner nom unique pour former le bouton soumettre

<form action="." method="post">
......
<input type="submit" name="form1">
</form>


<form action="." method="post">
......
<input type="submit" name="form2">
</form>


#view

if "form1" in request.POST:
    ...
if "form2" in request.POST:
    ...

Si les deux formes sont complètement différentes, il sera certainement pas mal de les manipuler par deux points de vue différents. Dans le cas contraire, vous pouvez utiliser l'astuce « élément input caché » zacherates a abordé. Ou bien, vous pouvez toujours donner à chaque élément submit uniques nom, et la différence dans la vue qui a été présenté sous forme sur cette base.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top