Skip to content

Commit 19a092c

Browse files
46 - Raw Delete Class Based View
1 parent 2137f65 commit 19a092c

3 files changed

Lines changed: 43 additions & 3 deletions

File tree

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
{% extends 'base.html' %}
2+
3+
{% block content %}
4+
5+
<form action='.' method='POST'>{% csrf_token %}
6+
<h1>Do you want to delete the course "{{ object.title }}"?</h1>
7+
<p><input type='submit' value='Yes' /> <a href='../'>Cancel</a></p>
8+
9+
</form>
10+
11+
{% endblock %}

src/courses/urls.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@
33
CourseView,
44
CourseListView,
55
CourseCreateView,
6-
CourseUpdateView
6+
CourseUpdateView,
7+
CourseDeleteView
78
# my_fbv
89
)
910

@@ -16,5 +17,5 @@
1617
path('create/', CourseCreateView.as_view(), name='courses-create'),
1718
path('<int:id>/', CourseView.as_view(), name='courses-detail'),
1819
path('<int:id>/update/', CourseUpdateView.as_view(), name='courses-update'),
19-
# path('<int:id>/delete/', <delete_view>, name='courses-delete'),
20+
path('<int:id>/delete/', CourseDeleteView.as_view(), name='courses-delete'),
2021
]

src/courses/views.py

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,39 @@
1-
from django.shortcuts import render, get_object_or_404
1+
from django.shortcuts import render, get_object_or_404, redirect
22
from django.views import View
33

44
from .forms import CourseModelForm
55
from .models import Course
66
# BASE VIEW CLass = VIEW
77

88

9+
class CourseDeleteView(View):
10+
template_name = "courses/course_delete.html" # DetailView
11+
def get_object(self):
12+
id = self.kwargs.get('id')
13+
obj = None
14+
if id is not None:
15+
obj = get_object_or_404(Course, id=id)
16+
return obj
17+
18+
def get(self, request, id=None, *args, **kwargs):
19+
# GET method
20+
context = {}
21+
obj = self.get_object()
22+
if obj is not None:
23+
context['object'] = obj
24+
return render(request, self.template_name, context)
25+
26+
def post(self, request, id=None, *args, **kwargs):
27+
# POST method
28+
context = {}
29+
obj = self.get_object()
30+
if obj is not None:
31+
obj.delete()
32+
context['object'] = None
33+
return redirect('/courses/')
34+
return render(request, self.template_name, context)
35+
36+
937
class CourseUpdateView(View):
1038
template_name = "courses/course_update.html" # DetailView
1139
def get_object(self):

0 commit comments

Comments
 (0)