6 Stimmen

Wie einfügen 2 verschiedene Formulare auf der gleichen Seite in Django

Ich muss 2 Formulare in dieselbe Seite einfügen:

1) Anmeldeformular

2) Anmeldeformular

.

Wenn ich dies also in der views.py verwende:

    if request.method == 'POST':

        form = registrationForm(request.POST) 
        if form.is_valid():  
            form.save()    
            return render_to_response('template.html', {
    'form': form,
})

Ich erhalte einen Fehler, wenn ich eines von zwei Formularen einreiche.

Wie kann ich zwischen den 2 Formularen unterscheiden, die in den Ansichten eingereicht werden?

0 Stimmen

8voto

Sie können auch so vorgehen,

 <form method='POST'>
    {{form1.as_p}}
    <button type="submit" name="btnform1">Save Changes</button>
    </form>
    <form method='POST'>
    {{form2.as_p}}
    <button type="submit" name="btnform2">Save Changes</button>
    </form>

CODE

if request.method=='POST' and 'btnform1' in request.POST:
    do something...
if request.method=='POST' and 'btnform2' in request.POST:
    do something...

1 Stimmen

Wer will schon 2 Schaltflächen zum Einreichen?

5voto

kafuchau Punkte 5523

Sie können zwei Formulare auf derselben Seite einreichen... aber die Aktion, die jedes Formular aufruft (d.h. die Ansichtsfunktion, die jedes Formular verarbeitet), sollte wahrscheinlich unterschiedlich sein. Auf diese Weise müssen Sie nicht versuchen, die Formulare zu unterscheiden.

z.B. auf Ihrer Seite:

<form id="login_form" action="{% url app.views.login %}" method="post">

   ...form fields...

</form>

<form id="registration_form" action="{% url app.views.registration %}" method="post">

   ...form fields...

</form>

In views.py haben Sie also eine login()-Ansichtsfunktion und eine registration()-Ansichtsfunktion, die jedes dieser Formulare bearbeiten.

3voto

VinayKumar.M Punkte 129
 <form action="Page where u want to post the data" method="post">
    <input name="edit" type="submit" value="Edit Client">
    <input name="delete" type="submit" value="Delete Client">
 </form>

Geben Sie den Schaltflächen einfach andere Namen.

if request.method == "POST" and 'edit' in request.POST:
 / Do /
if request.method == "POST" and 'delete' in request.POST:
 /Do /

2voto

Odif Yltsaeb Punkte 5469

Sie können auch beide Formulare unter derselben URL veröffentlichen:

Formulare in der Vorlage sind wie folgt:

<form method="post" action="/profile/">
{% for field in firstform %}
    <div class="mb10">
    <div class="fl desc">{{ field.label_tag }}<br />
    <div class="fr">{{ field }}{{ field.errors }}</div>
    <div class="clear"></div>
    </div>  
{% endfor %}
{% for field in secondform %}
    <div class="mb10">
    <div class="fl desc">{{ field.label_tag }}<br /><</div>
    <div class="fr">{{ field }}{{ field.errors }}</div>
    <div class="clear"></div>
    </div>  
{% endfor %}
<a class="submit fr" href="#""><img src="{{ MEDIA_URL }}img/save.png" /></a>
</form>

und behandeln Sie sie einfach so in der Ansicht:

if request.method == 'POST':
    firstform = ProfileForm(request.POST, request.FILES, instance=profile)
    secondform = UserForm(request.POST, instance=request.user)

und dann etwas mit firstform&secondform machen.

2voto

Fred Punkte 41

Sie können beide Formulare auf dieselbe URL verweisen lassen und eine versteckte Eingabe mit dem Namen Login oder Registrierung einrichten und das auf dem Server sortieren

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X