코딩공부/Python Django

KKU likelion django project (7)

integerJI 2020. 1. 2. 12:13

게시글 삭제가 완료되었다면 댓글 삭제기능을 만들어 보겠습니다.

 

@login_required

def comment_delete(requestpost_pkpk):

    post = get_object_or_404(Post, pk=post_pk)

    comment = get_object_or_404(Comment, pk=pk)

    user = request.user.get_username()

 

    context = {'post': post,}

    content = request.POST.get('content')

 

    if user == comment.comment_writer:

        comment.delete()

        return redirect('detail', post_pk)

 

    else:

        messages.info(request, '아이디가 다릅니다.')

        return redirect('detail', post_pk)

 

postapp/views.py에 새로운 함수 comment_delete를 생성합니다.

 

마찬가지로 postapp/urls.py에도 url을 설정

 

    path('<int:post_pk>/<int:pk>/comment_delete/', views.comment_delete, name='comment_delete'),

 

댓글 삭제는 일반적인 글 삭제와는 다릅니다.

 

게시글 삭제는 게시글만 삭제하여 게시글의 pk만 있으면 되지만

 

댓글은 삭제를 하고 해당 게시글로 가야하기 때문에

 

댓글의 pk 그리고 게시글의 pk 동시에 필요하여 두개의 pk값을 받아야 합니다.

 

postapp/templates/detail.html

 

<a href="{% url 'comment_delete' post.pk comment.pk %}"><img src="/static/delete.png" class="delete" alt="삭제" style="width: 1.2rem; height:1.2rem;"></a>

댓글 아래에 삭제버튼을 만들어 줍시다.

 

그렇다면 정상적으로 버튼이 작동되는 모습을 확인할수 있습니다.

 

이제 댓글창의 삭제버튼도 hidden을 적용시켜 작성자만 보이도록 설정하겠 습니다.

 

<a><span class="comment_writer_name">{{ post.name }}{{comment.comment_writer}}</span></a>

제일 먼저 댓글 작성자를 comment_writer_name로 작성

 

<span class="control hidden" id="control_id1{{ forloop.counter0 }}">

<a href="{% url 'comment_delete' post.pk comment.pk %}"><img src="/static/delete.png" class="delete" alt="삭제" style="width: 1.2rem; height:1.2rem;"></a>

</span>

저번 강의에서와 같이 hidden을 적용시킵니다.

 

단지 게시글과 다른점이라면 control에 id값이 붙는것입니다.

 

javascript도 적용시키며 설명하겠습니다.

 

    $(".comment_writer_name"

    $(".comment_writer_name")[0].innerHTML  

 

    for (i = 0i < $(".comment_writer_name").lengthi++) {

      if ($("#user_name").text() == $(".comment_writer_name")[i].innerHTML) {

        $("#control_id1" + i).removeClass("hidden");

      }

    }

먼저 저번 강의와 같이 댓글작성자의 이름을 불러옵니다.

 

여기서 이제 한 게시글의 댓글은 여러명이 작성할수있어 for문을 사용하여 control_id1에 적용시키는 것입니다.

 

그로하여

 

댓글창도 자신의 아이디와 동일한 경우에만 삭제버튼이 출력이 되도록 하였습니다!!

'코딩공부 > Python Django' 카테고리의 다른 글

python django heroku 배포하기  (3) 2020.01.02
KKU likelion django project (8)  (0) 2020.01.02
KKU likelion django project (6)  (0) 2020.01.02
KKU likelion django project (5) 번외  (0) 2020.01.02
KKU likelion django project (5)  (0) 2020.01.02