Löschen von Objekten in Django
In einem mini-blog-app, erstellen Sie eine Funktion löschen, so dass die Eigentümer des Blogs können die Löschung seiner Einträge (und nur die Einträge).
Ich denke, dass die einzigen Methoden, die für zu tun haben, ist eine form.
Obwohl ich mit der Löschung code scheint klar und richtig, es funktioniert nicht.
Mein code:
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, die Schaffung einer form für das?
auch, der einzige Weg, um die blog-post im Zusammenhang mit den Lösch-link hat eine id als parameter. Ist es richtig? Ich meine, vielleicht jeder Benutzer kann eine andere id in der url, und löschen Sie einen weiteren Eintrag (eventuell nicht sein)
InformationsquelleAutor der Frage dana | 2010-06-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Im Allgemeinen, für das löschen von Objekten sollten Sie eher die POST (oder LÖSCHEN) HTTP-Methoden.
Wenn Sie wirklich wollen, zu nutzen HTTP GET für dein Beispiel, hier ist, was Sie brauchen, um zu beheben:
Wenn Sie über url url so wie Euch:
<a href='/news/delete_new/{{object.id}}/'> Delete</a>
dann kannst du einfach schreiben anzeigen, überprüfen Sie, ob das Objekt gehört zu einem Benutzer eingeloggt ist und diesen Eintrag löschen, wenn ja, wie in code, den Sie bereits geschrieben haben:Um zu überprüfen, ob Neue Objekte belogs einige Benutzer die Sie benötigen, zu erstellen, die Verbindung zwischen
User
undNew
(wiecreated_by = models.ForeignKey(User)
imNew
Modell).Können Sie bekommen angemeldete Benutzer auf diese Weise:
request.user
Ich hoffe, ich habe deinen Punkt richtig, und meine Antwort hilft dir irgendwie.
PS: Sie können auch erwägen
{% url %}
tag-statt zu schreiben-urls direkt in Ihre Vorlagen.InformationsquelleAutor der Antwort dzida
Müssen Sie ein Formular verwenden, oder Sie sind anfällig für CSRF-Angriffe. Du bist auch löschen des Modells, bevor Sie geprüft haben, ob die Anforderung war ein GET-oder ein POST.
Erstellen Sie eine einfache
ModelForm
:In Ihrem views.py in der selben Django-app:
InformationsquelleAutor der Antwort Wilfred Hughes