오늘은 프로젝트 시작 한 날이다 나는 백엔드 기능 중에서는 먼저 영화 포스터 좋아요/ 댓글 좋아요
기능을 하는 맡게 되었다.
복잡한 기능 구현 기능은 아니라 생각보다는 문제 없이 잘 끝낼수 있게 되었다.
그리고 팀원 들과 git 으로 협업 했는데 머지 충돌이 발생 했지만 같이 해결 했다.
내일 부터는 프론트 엔드 시작하게 된다. 그래서 자바스크립트에 대해 알아보고
HTML/CSS 를 잘 활용 하는 방법을 찾으면서 오늘 하루를 보내게 되었다.
마지막으로 처음에 좋아요 기능에서는 좋아요 좋아요 취소 기능많있었지만,
serializers.py 이용하여 count 도 추가 구현했다.
오늘 구현한 코드.
views.py
class ArticlesMovieLikeView(APIView): #영화좋아yo
def post(self, request,movie_id ):
article = get_object_or_404(Movie, id=movie_id)
if request.user in article.movie_like.all():
article.movie_like.remove(request.user)
return Response("좋아요취소했습니다", status=status.HTTP_200_OK)
else:
article.movie_like.add(request.user)
return Response("좋아요했습니다", status=status.HTTP_200_OK)
class ArticlesCommentLikeView(APIView): #영화리뷰좋아요
def post(self, request, comment_id,movie_id ):
article = get_object_or_404(Comment, id=comment_id)
if request.user in article.comment_like.all():
article.comment_like.remove(request.user)
return Response("댓글,좋아요취소했습니다", status=status.HTTP_200_OK)
else:
article.comment_like.add(request.user)
return Response("댓글,좋아요했습니다", status=status.HTTP_200_OK)
---------------------------------------------------------------------------------
urls.py
urlpatterns = [
path('<int:movie_id>/like/', views.ArticlesMovieLikeView.as_view(), name = 'movie_like_view'),
path('<int:movie_id>/comment/<int:comment_id>/like/', views.ArticlesCommentLikeView.as_view(), name = 'articles_comment_like_view'),
]
---------------------------------------------------------------------------------
models.py
class Movie(models.Model):
movie_id = models.CharField(max_length =50)
image = models.URLField()
title = models.CharField(max_length =50)
release_year = models.DecimalField(max_digits=8, decimal_places=0)
rating = models.CharField(max_length =50)
duration = models.CharField(max_length =50)
description = models.TextField()
movie_like = models.ManyToManyField(User, related_name="like_movie",blank=True)
category = models.CharField(max_length=20, null =True)
class Comment(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
content = models.TextField()
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now= True)
comment_like = models.ManyToManyField(User, related_name="like_comment",blank=True)
movie = models.ForeignKey(Movie, on_delete=models.CASCADE,blank=True, related_name="movie_comment")
rating = models.CharField(max_length=10, blank=True)
def __str__(self):
return str(self.content)
---------------------------------------------------------------------------
serializers.py
class ArticleListSerializer(serializers.ModelSerializer):
movie_like_count= serializers.SerializerMethodField()
def get_movie_like_count(self, obj):
return obj.movie_like.count()
class Meta:
model = Movie
fields='__all__'
class CommentSerializer(serializers.ModelSerializer):
user = serializers.SerializerMethodField()
comment_like_count= serializers.SerializerMethodField()
def get_comment_like_count(self, obj):
return obj.comment_like.count()
def get_user(self, obj):
return obj.user.nickname
class Meta:
model = Comment
fields=('user', 'content','created_at', 'comment_like_count', 'rating',)
'TIL(Daily) > Django' 카테고리의 다른 글
Tue/15/Nov/22 - Django-test code/회원가입 (0) | 2022.11.15 |
---|---|
Wen/02/Nov/22 Django-추천 시스템 프로젝트 (0) | 2022.11.03 |
Thu/27/Oct/22 Django심화-3 (0) | 2022.10.28 |
Wed/28/Sep/22/ Django-4주차 (0) | 2022.09.28 |
Tue/27/Sep/22- Django 3주차 (0) | 2022.09.27 |
댓글