Skip to content

Commit 2137f65

Browse files
45 - Raw Update Class Based View
1 parent e3b487e commit 2137f65

3 files changed

Lines changed: 50 additions & 2 deletions

File tree

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
{% extends 'base.html' %}
2+
3+
{% block content %}
4+
<h1>Update: {{object.id }} - {{ object.title }}</h1>
5+
6+
<form action='.' method='POST'>{% csrf_token %}
7+
{{ form.as_p }}
8+
<input type='submit' value='Save' />
9+
</form>
10+
11+
12+
13+
14+
{% endblock %}

src/courses/urls.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@
22
from .views import (
33
CourseView,
44
CourseListView,
5-
CourseCreateView
5+
CourseCreateView,
6+
CourseUpdateView
67
# my_fbv
78
)
89

@@ -14,6 +15,6 @@
1415

1516
path('create/', CourseCreateView.as_view(), name='courses-create'),
1617
path('<int:id>/', CourseView.as_view(), name='courses-detail'),
17-
# path('<int:id>/update/', <update_view>, name='courses-update'),
18+
path('<int:id>/update/', CourseUpdateView.as_view(), name='courses-update'),
1819
# path('<int:id>/delete/', <delete_view>, name='courses-delete'),
1920
]

src/courses/views.py

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,39 @@
55
from .models import Course
66
# BASE VIEW CLass = VIEW
77

8+
9+
class CourseUpdateView(View):
10+
template_name = "courses/course_update.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+
form = CourseModelForm(instance=obj)
24+
context['object'] = obj
25+
context['form'] = form
26+
return render(request, self.template_name, context)
27+
28+
def post(self, request, id=None, *args, **kwargs):
29+
# POST method
30+
context = {}
31+
obj = self.get_object()
32+
if obj is not None:
33+
form = CourseModelForm(request.POST, instance=obj)
34+
if form.is_valid():
35+
form.save()
36+
context['object'] = obj
37+
context['form'] = form
38+
return render(request, self.template_name, context)
39+
40+
841
class CourseCreateView(View):
942
template_name = "courses/course_create.html" # DetailView
1043
def get(self, request, *args, **kwargs):

0 commit comments

Comments
 (0)