게시글 삭제가 완료되었다면 댓글 삭제기능을 만들어 보겠습니다.
@login_required def comment_delete(request, post_pk, pk): 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 = 0; i < $(".comment_writer_name").length; i++) { 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 |