스크랩 기능 (북마크)
이제 프로젝트 주제가 기사(뉴스)라 공유 및 북마크저장 같은 기능이 필요할 거같아서 구현
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)
댓글