๐DeleteView
- ๊ธฐ์กด ๋ฐ์ดํฐ๋ฅผ ์ญ์ ํด์ฃผ๋ ๋ทฐ
- ์ญ์ ์ฒ๋ฆฌ ํ ์๋์ผ๋ก ๋ฆฌ๋๋ ์
์ฒ๋ฆฌ๋จ
- GET์ผ๋ก ์ ๊ทผํ๋ฉด ์ญ์ ์ฌ๋ถ๋ฅผ ์ฌํ์ธํ๋ ํผ์ ๋ ๋๋ง
Delete ๋ทฐ ํด๋์ค์ ๊ธฐ๋ณธ ํํ
class DeleteView:
model: Model
template_name: str
pk_url_kwarg: str
success_url: str
def get_success_url(self):
return success_url: str
โป get ๋ฉ์๋๋ฅผ ํ์ฉํ์ฌ DeleteView์ ์ญ์ ์ฌ๋ถ๋ฅผ ์ฌํ์ธํ๋ ํผ์ ๋ ๋๋งํ์ง์๊ณ ์ฆ์ ๋ฐ๋ก ์ญ์ ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํ๋๋ก ๊ตฌํํ๊ธฐ(UpdateView์ ์ ์ฌ)
๐์ ์ฉ
from django.http import HttpRequest, HttpResponse
from django.shortcuts import render, HttpResponseRedirect, redirect
from django.views.generic import TemplateView, CreateView, UpdateView, DeleteView, ListView, DetailView, FormView
from .models import Task, ChecklistItem
from django.utils import timezone
from django.core.paginator import Paginator
from django.urls import reverse_lazy
class TaskDeleteView(DeleteView):
model = Task
pk_url_kwarg = "task_id"
template_name = "pages/task_delete.html"
success_url = "/"
def get(self, request, *args, **kwargs):
self.object = self.get_object()
success_url = self.get_success_url()
self.object.delete()
return redirect(success_url)
def get_success_url(self) -> str:
return self.success_url
class ChecklistDeleteView(DeleteView):
model = ChecklistItem
pk_url_kwarg = "checklist_id"
template_name = "pages/checklist_delete.html"
success_url = "/tasks/"
def get(self, request, *args, **kwargs):
self.object = self.get_object()
success_url = self.get_success_url()
self.object.delete()
return redirect(success_url)
def get_success_url(self) -> str:
return self.success_url + str(self.kwargs['task_id']) + '/'