Skip to content

Commit a46ab93

Browse files
47 - Custom Mixin for Class Based Views
1 parent 19a092c commit a46ab93

File tree

1 file changed

+9
-11
lines changed

1 file changed

+9
-11
lines changed

src/courses/views.py

+9-11
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,17 @@
55
from .models import Course
66
# BASE VIEW CLass = VIEW
77

8-
9-
class CourseDeleteView(View):
10-
template_name = "courses/course_delete.html" # DetailView
8+
class CourseObjectMixin(object):
9+
model = Course
1110
def get_object(self):
1211
id = self.kwargs.get('id')
1312
obj = None
1413
if id is not None:
15-
obj = get_object_or_404(Course, id=id)
16-
return obj
14+
obj = get_object_or_404(self.model, id=id)
15+
return obj
1716

17+
class CourseDeleteView(CourseObjectMixin, View):
18+
template_name = "courses/course_delete.html" # DetailView
1819
def get(self, request, id=None, *args, **kwargs):
1920
# GET method
2021
context = {}
@@ -34,7 +35,7 @@ def post(self, request, id=None, *args, **kwargs):
3435
return render(request, self.template_name, context)
3536

3637

37-
class CourseUpdateView(View):
38+
class CourseUpdateView(CourseObjectMixin, View):
3839
template_name = "courses/course_update.html" # DetailView
3940
def get_object(self):
4041
id = self.kwargs.get('id')
@@ -96,14 +97,11 @@ def get(self, request, *args, **kwargs):
9697
return render(request, self.template_name, context)
9798

9899

99-
class CourseView(View):
100+
class CourseView(CourseObjectMixin, View):
100101
template_name = "courses/course_detail.html" # DetailView
101102
def get(self, request, id=None, *args, **kwargs):
102103
# GET method
103-
context = {}
104-
if id is not None:
105-
obj = get_object_or_404(Course, id=id)
106-
context['object'] = obj
104+
context = {'object': self.get_object()}
107105
return render(request, self.template_name, context)
108106

109107
# def post(request, *args, **kwargs):

0 commit comments

Comments
 (0)