[Python Django] 3-8. CBV DeleteView를 이용한 게시판 글 삭제 기능 구현
2022. 3. 26. 09:47ㆍPython/Django Framework
반응형

views.py에 delete class 추가
- get을 오버라이드 하지 않는다면 template파일이 필요하며 해당 파일에서 submit 처리가 필요하다
- post를 오버라이드 하여 작성자와 로그인을 확인한 뒤 delete를 진행한다, 생략한다면 바로 삭제된다
- delete를 실제 delete가 아닌 상태값을 변화시키는 용도로 변경하려면 delete를 오버라이드 한다
class BoardDeleteView(DeleteView):
model = Board
success_url = '/board/list/'
#template_name = "board_delete.html"
# template 없이 접근만으로 삭제
# 생략한다면 template에서 submit을 실행해주어야 한다
def get(self, request, *args, **kwargs):
return self.post(request, *args, **kwargs)
# post에서 삭제 처리 게시물 작성자와 로그인 유저의 id를 비교한 뒤 삭제한다
# 생략하면 바로 게시물이 삭제된다
def post(self, request, *args, **kwargs):
board = Board.objects.get(pk=kwargs.get('pk'))
if board.insert_user.id != request.session.get('user_id'):
raise Http404("잘못된 접근입니다")
return self.delete(request, *args, **kwargs)
urls.py 수정
from django.urls import path
from board.views import BoardCreateView, BoardDetailView, BoardListView, BoardUpdateView, BoardDeleteView
urlpatterns = [
path('create/', BoardCreateView.as_view()),
path('update/<int:pk>/', BoardUpdateView.as_view()),
path('list/', BoardListView.as_view()),
path('detail/<int:pk>/', BoardDetailView.as_view()),
path('delete/<int:pk>/', BoardDeleteView.as_view())
]
반응형
'Python > Django Framework' 카테고리의 다른 글
[Python Django] is_authenticated, is_anonymous, is_active (0) | 2022.04.01 |
---|---|
[Python Django] 4. Decorator 이용하기 (0) | 2022.03.26 |
[Python Django] 3-7. CBV UpdateView를 이용한 글 수정 기능구현 (0) | 2022.03.26 |
[Python Django] 3-6. CBV ListView - Pagination 응용 get_elided_page_range() (0) | 2022.03.26 |
[Python Django] 3-5. CBV ListView에 Pagination 적용 (0) | 2022.03.26 |