Domanda

Ho due forme completamente diverse in un unico modello. Come elaborarli in una vista? Come posso capire di quale delle forme è stata presentata? Come posso utilizzare il prefisso per compire questo? O forse è meglio scrivere viste separate?
saluti
chriss

È stato utile?

Soluzione

Personalmente, mi piacerebbe usare un punto di vista per gestire POST di ogni modulo.

D'altra parte, è possibile utilizzare un elemento di input nascosto che indica quale forma è stato utilizzato

<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>

Con una vista come:

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(),
    })

... ma ancora una volta, credo che un punto di vista ogni forma (anche se la vista accetta solo i messaggi) è più semplice che cercare di fare quanto sopra.

Altri suggerimenti

come Ayaz ha detto, si dovrebbe dare nome univoco per formare pulsante di invio

<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:
    ...

Se le due forme sono completamente diversi, non sarà certo male avere loro essere gestite da due diversi punti di vista. In caso contrario, è possibile utilizzare il trucco 'nascosto ingresso elemento' zacherates ha toccato. Oppure, si potrebbe sempre dare ad ogni elemento submit un unico nome e differenziare in vista quale forma è stato presentato basa su questo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top