django delete object with html button

Viewed 2178

I have a simple site project in Django and I have movies lists in man page and movies details in the second page.

I want to add a delete button on movies details tab where user can delete the movies object.

views.py

def movies_list(request):
    return render(request, 'movies.html',{'movies':movies.objects.all()})


def movies_details(request,slug):
    movies_details=MyModel.objects.all()
    det=get_object_or_404(movies_details, slug_name=slug)
    return render(request, 'movies_details.html',{'movies_details':movies_details,'det':det})

what is the better method to do that ?

something like this using new view :

def delete(request, id):
    note = get_object_or_404(Note, pk=id).delete()
    return HttpResponseRedirect(reverse('movies_details.views.movies_details'))

urls.py

url(r'^delete/(?P<id>\d+)/$','project.app.views.delete'),

or some like this ?

if request.POST.get('delete'):
    obj.delete()

or use some Django form ?

1 Answers

You can use DeleteView functionality of django. I think that will be the better one.

from django.views.generic.edit import DeleteView
from django.urls import reverse_lazy

class DeleteTaskView(DeleteView):
     template_name = 'template/delete.html'
     model = Task
     pk_url_kwarg = 'id'

    def get_success_url(self):
        return reverse_lazy('movies_details.views.movies_details')
Related