In einer Mini-Blog-App möchte ich eine Löschfunktion erstellen, damit der Eigentümer des Blogs seine Einträge (und nur seine Einträge) löschen kann. Ich denke, dass die einzige Methode zu tun ist, ein Formular zu verwenden. Obwohl mein Löschcode klar und korrekt scheint, funktioniert es nicht. Mein Code:Löschen von Objekten in Django
def delete_new(request,id):
u = New.objects.get(pk=id).delete()
if request.method == 'POST':
form = DeleteNewForm(request.POST)
form.u.delete()
form.save()
return render_to_response('news/deleteNew.html', {
'form': form,
},
context_instance=RequestContext(request))
und in der Vorlage:
<a href='/news/delete_new/{{object.id}}/'> Delete</a> <br />
Ist das ein richtiger Ansatz? Ich meine, eine Form dafür zu schaffen? auch, die einzige Möglichkeit, den Blogpost mit dem Löschlink verbunden zu machen, ist eine ID als Parameter. Ist es richtig? Ich meine, vielleicht kann jeder Benutzer eine andere ID in der URL eingeben und einen anderen Eintrag löschen (eventuell nicht einen)
es rollt reibungslos und in nur einer Zeile: u = New.objects. filter (created_by = request.user) .get (pk = id) .delete() danke! :) – dana
Genau, können Sie einige Fehlerbehandlung hinzufügen, wenn es kein neues Objekt für einen bestimmten Benutzer gibt und eine nette Fehlermeldung anzeigt (mit Ihrem einen Liner wird es laut mit 500 Fehler fehlschlagen). Aber im Grunde ist das alles, was Sie hier tun müssen :) Ich bin froh, dass meine Antwort für Sie hilfreich war. – dzida
Ich empfehle dringend, ein Formular zu verwenden und POST zu überprüfen, da GETs auf Seiten den Status auf dem Server nicht ändern sollen. (Obwohl in der Praxis das, was hier passiert, relativ 'sicher' ist) –