Frage

Ich habe zwei ganz andere Formen in einer Vorlage. Wie sie in einer Ansicht bearbeiten? Wie kann ich die von den Formen unterscheiden vorgelegt wurde? Wie kann ich Präfix verwenden, die zu erledigenden? Oder vielleicht ist es besser, separate Ansichten zu schreiben?
Grüße
chriss

War es hilfreich?

Lösung

Persönlich würde ich eine Ansicht verwenden, um jede Form des POST zu behandeln.

Auf der anderen Seite könnten Sie ein verstecktes Eingabeelement verwenden, die angeben, welches Formular verwendet wurde,

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

Mit einem Blick wie:

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

... aber noch einmal, ich glaube, eine Ansicht pro Form (auch wenn der Blick nur POSTs akzeptiert) ist einfacher als zu versuchen, die oben zu tun.

Andere Tipps

wie ayaz sagte, sollten Sie eindeutige Namen geben zu bilden Submit-Button

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

Wenn die beiden Formen völlig unterschiedlich sind, wird es sicherlich nicht schaden, haben sie von zwei verschiedenen Ansichten behandelt werden. Andernfalls können Sie die ‚versteckte Eingabeelement‘ Trick zacherates hat berührt. Oder könnten Sie immer jedem submit Elemente geben einen einzigartig Namen, und differenzieren in der Ansicht, die Form auf, die eingereicht wurde basiert.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top