2017-07-29 1 views
0

Ich habe eine Liste von mehreren Objekten aus meiner Datenbank (namens "plp's"), in einer Tabelle angeordnet. Neben jedem "plp" -Element habe ich eine Schaltfläche "Bearbeiten", um diesen bestimmten Eintrag zu ändern.Django: Umleitung Benutzer zwei Seiten zurück

Als nächstes leite ich den Benutzer auf eine neue URL, wo ich die ID des "plp" übergeben, und zeigen Sie das Formular, um es zu bearbeiten, mit einem "Speichern" -Button.

Nach dem Drücken der "Speichern", die Request.POST ist, möchte ich den Benutzer zurück zur ersten URL, mit der Liste aller "Plp" Objekte in einer Liste. Das heißt auf die Seite, wo er zuerst "Bearbeiten" gedrückt hat.

Kann ich die URL, auf die der "Edit" geklickt wurde, irgendwie speichern und an meine views.py weitergeben?

Danke

listdns.html: 
<td> 
<a href='{% url "plpuredi" plp_id=pos.id %}' class="btn btn-primary btn-sm">Uredi</a> 
</td> 

urls.py:

rl(r'^(?P<plp_id>\d+)/uredi$', plp_list_uredi,name="plpuredi") 

views.py:

def plp_list_uredi(request, plp_id=None): 
moj_plp=PLPPostavka.objects.get(id=plp_id) 
form=PLPPostavkaForm(request.POST or None,request=request,dns=moj_plp.dns, instance=moj_plp) 
context ={ 
    'plp':moj_plp, 
    'form':form, 
} 
if request.POST: 
    if form.is_valid(): 
     plp = form.save() 
     return redirect(request.path) 
return render(request, "plp_pos/uredi.html",context) 

uredi.html

<form action="" method="POST"> 
{% csrf_token %} 
<div class="box"> 
<div class="box-header"> 
    <h4 class="box-title"> 
     Urejanje PLP Postavke 
    </h4> 
</div> 
<div class="box-body"> 
{% for field in form %} 
<div class="form-group"> 
<label for="{{ field.id_for_label }}" class="col-md-2 control-label detail">{{ field.label }}</label> 
<div class="col-md-10"> 
{% if field|field_type == "datefield" %} 
    {% render_field field class+="form-control dateinput" %} 
{% else %} 
    {% render_field field class+="form-control" %} 
{% endif %}  
</div> 
</div> 
{% endfor %} 
</div> 
<div class="box-footer"> 
    <div class="box-tools pull-right"> 
     <input type="submit" value="Shrani" class="btn btn-primary" /> 
    </div> 
</div> 

+1

geben Sie Ihre models.py, urls.py und views.py –

+0

Code einschließen innerhalb des Beitrags bitte – UmarZaii

+0

ich denke, Sie müssen nur ändern Zeile: 'return redirect (request.path)' und verwenden Sie httpredirect zu url Sie möchten umleiten zu – Gahan

Antwort

0

Haben Sie nicht nur 1 Seite, um alle Elemente zu bearbeiten? Dann könnten Sie vielleicht die Verbindung z.B.

return HttpResponseRedirect(my_edit_url) 

Wenn dies nicht funktioniert, und Sie müssen zwei Seiten zurück gehen Sie einen Blick auf dieses Thema nehmen: How to redirect to previous page in Django after POST request