Skip to content

Commit 01d4038

Browse files
committed
06.03 simplify new Tag views with generics
1 parent 432f715 commit 01d4038

File tree

1 file changed

+23
-62
lines changed

1 file changed

+23
-62
lines changed

src/organizer/views.py

Lines changed: 23 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
"""Views for Organizer App"""
2-
from django.shortcuts import (
3-
get_object_or_404,
4-
redirect,
5-
render,
2+
from django.urls import reverse_lazy
3+
from django.views.generic import (
4+
CreateView,
5+
DeleteView,
6+
DetailView,
7+
ListView,
8+
UpdateView,
69
)
7-
from django.urls import reverse
8-
from django.views import View
9-
from django.views.generic import DetailView, ListView
1010

1111
from .forms import TagForm
1212
from .models import Startup, Tag
@@ -26,69 +26,30 @@ class TagDetail(DetailView):
2626
template_name = "tag/detail.html"
2727

2828

29-
class TagCreate(View):
29+
class TagCreate(CreateView):
3030
"""Create new Tags via HTML form"""
3131

32-
def get(self, request):
33-
"""Display an HTML form"""
34-
context = {"form": TagForm(), "update": False}
35-
return render(request, "tag/form.html", context)
32+
form_class = TagForm
33+
model = Tag
34+
template_name = "tag/form.html"
35+
extra_context = {"update": False}
3636

37-
def post(self, request):
38-
"""Handle Form submission: save Tag"""
39-
tform = TagForm(request.POST)
40-
if tform.is_valid():
41-
tag = tform.save()
42-
return redirect(tag.get_absolute_url())
43-
# invalid data; show form with errors
44-
context = {"form": tform, "update": False}
45-
return render(request, "tag/form.html", context)
4637

47-
48-
class TagUpdate(View):
38+
class TagUpdate(UpdateView):
4939
"""Update a Tag via HTML form"""
5040

51-
def get(self, request, slug):
52-
"""Display an HTML form with pre-filled data"""
53-
tag = get_object_or_404(Tag, slug=slug)
54-
context = {
55-
"tag": tag,
56-
"form": TagForm(instance=tag),
57-
"update": True,
58-
}
59-
return render(request, "tag/form.html", context)
60-
61-
def post(self, request, slug):
62-
"""Handle Form submission: save Tag"""
63-
tag = get_object_or_404(Tag, slug=slug)
64-
tform = TagForm(request.POST, instance=tag)
65-
if tform.is_valid():
66-
tag = tform.save()
67-
return redirect(tag.get_absolute_url())
68-
# invalid data; show form with errors
69-
context = {
70-
"tag": tag,
71-
"form": tform,
72-
"update": True,
73-
}
74-
return render(request, "tag/form.html", context)
75-
76-
77-
class TagDelete(View):
41+
form_class = TagForm
42+
model = Tag
43+
template_name = "tag/form.html"
44+
extra_context = {"update": True}
45+
46+
47+
class TagDelete(DeleteView):
7848
"""Confirm and delete a Tag via HTML Form"""
7949

80-
def get(self, request, slug):
81-
"""Display an HTML form to confirm removal"""
82-
tag = get_object_or_404(Tag, slug=slug)
83-
return render(
84-
request, "tag/confirm_delete.html", {"tag": tag}
85-
)
86-
87-
def post(self, request, slug):
88-
"""Delete Tag"""
89-
tag = get_object_or_404(Tag, slug=slug)
90-
tag.delete()
91-
return redirect(reverse("tag_list"))
50+
model = Tag
51+
template_name = "tag/confirm_delete.html"
52+
success_url = reverse_lazy("tag_list")
9253

9354

9455
class StartupList(ListView):

0 commit comments

Comments
 (0)