최근에 만든 댓글 입력 폼은 작성하자마자 리다이렉션이 되어 화면에 댓글이 나타났다.

이를 즉시 노출하는 것에서 Admin을 통해 승인된 댓글만 보여지는 형태로 바꿔볼 것이다.


어떻게 댓글이 안보이다가 보이는지 생각해보면,

댓글의 허용 여부에 따라 화면에 노출되냐 마냐가 결정된다.


그러므로 Comment에 새로운 속성이 추가되어야 한다.

https://docs.djangoproject.com/en/2.1/ref/models/fields/


우리의 목적에 필요한 필드 속성은 참과 거짓의 값을 담는 BooleanField이다.

BooleanField 사용시 기본값을 정해주는데 최초 노출은 하지않으므로 False를 입력한다.

필드명은 목적에 부합하는 approved_comment로 정했다.



1
2
3
4
5
6
7
8
9
class Comment(models.Model):
    article = models.ForeignKey(
        Article,
        related_name="article_comments",
        on_delete=models.CASCADE
    )
    username = models.CharField(max_length=50)
    content = models.CharField(max_length=200)
    approved_comment = models.BooleanField(default=False)
cs



폼을 통해 comment에 대한 데이터를 받을 때에도 False 값을 받도록 고정시켰다.



1
2
3
4
5
6
7
8
9
    elif request.method == "POST":
        username = request.POST.get("username")
        content = request.POST.get("content")
        Comment.objects.create(
            article=article_detail,
            username=username,
            content=content,
            approved_comment=False
        )
cs



이제 템플릿에서 댓글 데이터를 가져올 때 True or False 여부를 따져서 노출시킬 필요가 있다.



1
2
3
4
5
6
7
8
       {% for comment in article_detail.article_comments.all %}
       {% if comment.approved_comment is True %}
       <h4 class="author">{{ comment.username }}</h4>
       <div class="text">
       {{ comment.content }}
       </div>
       {% endif %}
       {% endfor %}
cs


approve_comment의 값이 True인 경우에만 데이터가 노출되도록 if문을 작성했다.

기본적으로 댓글에 False 값을 가지므로 Admin을 통해 허용 여부가 체크되어야 비로소 화면에 노출된다.

블로그 이미지

쵸잇

,