본문 바로가기
카테고리 없음

2023-06-15 스크랩 기능

by jung1911 2023. 6. 15.

스크랩 기능 (북마크)

이제 프로젝트 주제가 기사(뉴스)라 공유 및 북마크저장 같은 기능이 필요할 거같아서 구현

models.py

 

북마크 갯수를 세기 위해 모델에 넣어줬다.

 # 북마크 갯수 세는 함수
    def count_scrap(self):
        return self.scrap.count()

 

 

 

post 로 스크랩을 저장 취소를 할 수 있도록 구현을 했고 get으로 스크랩을 conut 하도록 했다.

 

views.py

class ScrapView(APIView):
    def post(self, request, article_id):
        article = get_object_or_404(Article, id=article_id)
        if request.user in article.scrap.all():
            article.scrap.remove(request.user)
            return Response('스크랩취소', status=status.HTTP_202_ACCEPTED)
        else:
            article.scrap.add(request.user)
            return Response('스크랩', status=status.HTTP_200_OK)


    def get(self, request, article_id):
        article = Article.objects.get(id=article_id)
        scrap_count = article.count_scrap()
        return Response({'scrap': scrap_count})

 

그리고 구현하다 스크랩을 한 게시글들을 모아 보는것도 괜찮지 않을까 싶어서 추가 해봤다.

뭔가 불필요한 내용들이 섞여있는거 같은 느낌이 든다. 좀 더 수정해보고 다시 구현해봐야 알 거 같다.

 

#------------------------------------ 게시글 스크랩 리스트 -------------------------------------

class ScrapListView(APIView):
    def post(self, request, article_id):
        article = get_object_or_404(Article, id=article_id)
        if request.user in article.scrap.all():
            article.scrap.remove(request.user)
            return Response('스크랩 취소', status=status.HTTP_200_OK)
        else:
            article.scrap.add(request.user)
            return Response('스크랩', status=status.HTTP_200_OK)    
   
   
# ----------------------------------- 스크랩 한 게시글 보기 -----------------------------------

    def get(self, request):
        user = request.user
        article = user.scrap.all()
        serializer = ArticleSerializer(article, many=True)
        return Response(serializer.data, status=status.HTTP_200_OK)

댓글