Django ViewClass 2-10) DeleteView

Turtleยท2023๋…„ 12์›” 19์ผ
0
post-thumbnail

๐Ÿ“Œ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:
        # task_id = self.kwargs["task_id"]
        # return reverse_lazy("view-task", kwargs={'task_id':task_id})
        return self.success_url + str(self.kwargs['task_id']) + '/'

0๊ฐœ์˜ ๋Œ“๊ธ€