Westagram #5

chaerin·2021년 2월 12일
0

Westagram

목록 보기
5/5

게시물에 댓글 등록

django에서는 다루는 데이터를 기준으로 앱을 분리하여 관리한다.

게시물 테이블과 댓글 테이블로 분리되므로 각각 분리된 앱으로 관리할 수도 있지만

이번 프로젝트에서는 이 두 데이터를 같은 앱에서 관리해볼 것이다.

댓글 모델 생성

게시물을 관리하는 Posting 앱에 댓글을 관리하는 테이블을 만들기 위해 아래와 같이 모델을 생성한다.

Comment 클래스를 만들고

댓글을 작성한 user,
댓글이 작성되는 게시물 post,
댓글 작성 시간 created_at,
댓글 내용 content를 만든다.

Foreign Key 를 이용하여 해당 댓글의 유저와 이미 가입된 사람(계정)을 연결시켜주고, 댓글이 달리는 게시물을 등록되어 있는 게시물과 연결시켜 주었다.

댓글 뷰 작성

댓글 등록

if Account.objects.filter(email = data['email']).exists():
# 요청받은 이메일이 존재하는지 확인

  user = Account.objects.get(email = data['email'])
  # 존재한다면 user에 해당 사용자 정보 할당
  
  if Post.objects.filter(id = data['post_number']).exists():
  # 요청받은 게시물 번호에 맞는 게시물이 존재하는지 확인
  
    post = Post.objects.get(id = data['post_number'])
    # 존재한다면 post에 해당 게시물 정보 할당
    
    # 요청받은 정보들로 데이터 생성
    Comment(
    	    user     = user,
            post     = post,
            content  = data['content'],
            ).save()
            
    # 에러메시지와 코드 반환
    return JsonResponse({'MESSAGE': 'SUCCESS'}, status=200)
  return JsonResponse({'MESSAGE': 'INVALID_POST'}, status=401)
return JsonResponse({'MESSAGE': 'INVALID_USER'}, status=401)

댓글 표출

특정 게시물을 기준으로 분류되도록 클래스를 생성해본다.

def get(self, request):			# get 메소드 사용
  data = json.loads(request.body)	# 요청의 body
  post_id = data['post_number']		# 요청받은 게시물 번호에 해당하는 게시물
  
  comment_list = list(Comment.objects.filter(post_id = post_id).values())
  # 해당 게시물에 달린 모든 댓글 정보
  
  return JsonResponse({'comment_list': comment_list}, status=200)
  # 댓글 리스트 및 코드 반환 

2번 게시물에 등록된 댓글 정보를 불러오면 위와 같은 댓글 리스트를 확인 할 수 있다.

정리

0개의 댓글