인프런 커뮤니티 질문&답변

조한림님의 프로필 이미지
조한림

작성한 질문수

파이썬 사용자를 위한 웹개발 입문 A to Z Django + Bootstrap

안녕하십니까 작성한 포스트를 삭제하는 기능은 없는건가요?

작성

·

230

0

2회차 듣고 있는데 아무생각없이 삭제하려고 보니까 삭제기능은 없는데 만약 구현한다면 하는 생각으로

urls.py에 url 패턴에

path('<int:pk>/delete/',  views.PostDelete.as_view())

라고 했구요

models.py에 

def get_delete_url(self):

    return f'{self.pk}/delete/' 로 정의했고

html post_detail에 {{ object.get_delete_url }}로 버튼 만들었고

views.py에

class PostDelete(LoginRequiredMixin, DeleteView):

    model = Post

    login_url  ='/login/'

    succress_url = '/' 이렇게 코딩했는데 delelte_confirm.html을 지정을 안해줫다고 나오는데 이 컨펌을 댓글 처럼 delete_confirm.html대신에 

댓글삭제를 modal로 컨펌해서 지우고 싶은데 함수형 말고 클래스형 뷰로 설명을 좀 해주실수 있나요

답변 3

1

조한림님의 프로필 이미지
조한림
질문자

modal 에서 form action에 get_delete_url 주고 method 를 post로 보내니 그냥 지워지는 군요 ㅎㅎ...

0

아 해결했습니다!!..ㅋㅋ 자문자답이 되었네요. 그러나 여전히 왜 안됐었는지... 답은 못찾았습니다..

# views.py
def
delete_post(request, pk):
model = Post.objects.get(pk=pk)
model.delete()
return redirect('/blog/')

#url.py
app_name = 'blog'
urlpatterns = [
path('delete_post/<int:pk>',views.delete_post, name='delete_post'),
]

# models.py
def get_delete_url(self):
return '/delete_post/{self.pk}/'

# post_detail.html
<a href="{% url 'blog:delete_post' pk=post.pk %}">delete</a>

0

안녕하세요, 

알려주신대로 시도했는데 아래와같은 오류가 나는데 혹시 해결방법이 있을까요? 

[ERROR 메세지]

[09/Jun/2020 17:26:23] "POST /blog/27/ HTTP/1.1" 405 0 

# urls.py
urlpatterns = [

path('blog/<int:pk>/delete/', views.PostDelete.as_view()),
]

# models.py
def
get_delete_url(self):
return '/{self.pk}/delete/'

# post_detail.html

<form method="post" action="{{ get_delete_url }}">{% csrf_token %}
<button type="submit" class="btn btn-primary">Confirm</button>
</form>

# views.py
class PostDelete(LoginRequiredMixin, DeleteView):
model = Post
login_url =
'/login/'
success_url = '/'

[09/Jun/2020 17:26:23] "POST /blog/27/ HTTP/1.1" 405 0

조한림님의 프로필 이미지
조한림

작성한 질문수

질문하기