Django - Comment 삭제

nathan·2021년 7월 24일
0

Django

목록 보기
21/22

지난 시간에 다뤄보았던 Comment를 삭제하는 방법에 대해 알아보자.

우선, 해당 Comment를 쓴 유저가 로그인이 되어 있어야 하며, 그 유저만이 해당 Comment를 지울 수 있게 해야한다.


views.py

# blog/views.py

def replydelete(request, id):
    comment = get_object_or_404(Comment, pk=id)
    blog_id = comment.blog.id
    comment.delete()
    return redirect('blog:detail', blog_id)
  • 먼저 Comment의 id 값을 인자로 받아 해당 comment를 찾아낸다.
  • comment에 해당하는 블로그의 아이디를 blog_id에 할당한다.
  • comment를 지운다.

urls.py

# blog/urls.py
...
    path('replydelete/<int:id>', views.replydelete, name="replydelete"),
  • id 값을 view 함수에서 인자로 받기 때문에 path converter를 사용하여 url의 끝에 넣어준다.
    • replydelete/<int:id>

HTMl

...
  {% for comment in blog.comments.all %}
  <p>{{comment.comment_user}}</p>
  {{ comment.comment_body }} 
  {% if comment.comment_user == user %}
  <a href="{% url 'blog:replydelete' comment.id %}"
    ><input type="button" value="delete"
  /></a>
  {% endif %}
  <p id="comment_time">위 댓글을 단 시간 : {{comment.comment_date}}</p>

  <hr />
  {% endfor %}
...
  • 해당 게시물에 관련된 comment를 모두 불러올 때 {% if comment.comment_user == user %}이라면, 해당되는 comment를 지울 수 있게 버튼을 띄워준다.

결과

  • 위와 같이 nathan29849에 해당하는 유저가 로그인이 되어있을 때, nathan29849의 댓글을 지울 수 있는 delete 버튼이 떴다!
profile
나는 날마다 모든 면에서 점점 더 나아지고 있다.

0개의 댓글