728x90
TIL
📌
오늘 한 일
좋아요 기능 구현
거북이 반
오늘은 내가 맡은 좋아요 기능 구현을 도전했다.
좋아요 기능은 구글링 하면 많이 나와서 장고를 못하는 나도
구현할 수 있겠구나라고 생각했다.
하지만 내 착각이였다.
보기에는 쉽지만 팀원분에 도움을 많이 받았다.
거의 팀원분이 해주셨다고 해도 될 거 같다.ㅋㅋㅋ
팀원분이 도와줬다 해도 작성한 코드를 내 것으로 만들 수 있게
어떤 식으로 코드가 진행되는지 열심히 이해를 했다.
다음에 좋아요 부분이 온다면 오늘 작성한 코드를 이용해서
기능을 구현해봐야겠다!!
- 좋아요 기능 구현
post/models.py
class Post(models.Model):
like_authors = models.ManyToManyField(User, related_name='like_posts')
#ManyToManyField를 사용하면 자동으로 두 테이블 사이의 관계를 관리해주는 중간 테이블을 생성해준다.
#데이터베이스를 확인해보면 _로 이어준 테이블이 생성된 것을 볼 수있음
post/urls.py
urlpatterns = [
path('post/likes/<int:post_id>/', views.likes, name='post-likes'),
#post/likes/<int:post_id>/는, post/likes/123과 같이 맨 뒷자리에 숫자가 온다는 얘기고
#이 숫자는 post_id에 담겨져 views.likes에 전달 된다.
]
post/views.py
@login_required(login_url='user:signin')
def likes(request, post_id):
if request.method == 'POST': #요청이 post로 왔다면 아래 if문
post = Post.objects.get(id=post_id)#id값과 post에서 받아온 데이터와 같은 친구를 불러오겠다.
#그 친구를 post에 저장
if post.like_authors.filter(id=request.user.id).exists():#post에 id=request.user.id가 있다면 True, 없으면 False로 분기문 탈출
post.like_authors.remove(request.user) #있다면 remove로 제거
else:
post.like_authors.add(request.user) #add로 추가
return redirect(request.META['HTTP_REFERER'])
post/post/post_detail.html
<form action='{% url 'post:post-likes' post.id %}' method='post'>
{% csrf_token %}
<div class='post_detail-feed_box-like_bar'>
{% if user in post.like_authors.all %} <!--post.like_authors.all에 user가 있다면 아래 if문 돌기-->
<div class='post_detail-feed_box-like_wrap'><button class='post_detail-feed_box-like_button'><img src="{% static './assets/like.png'%}"/></button></div>
{% else %}
<div class='post_detail-feed_box-like_wrap'><button class='post_detail-feed_box-like_button'><img src="{% static './assets/like_empty.png'%}"/></button></div>
{% endif %}
<div class='post_detaile-feed_box-like_count_text'>좋아요{{post.like_authors.count}}개</div>
</div>
</form>
728x90
'내일배움캠프' 카테고리의 다른 글
44. 내일배움캠프 - 34일차 TIL (0) | 2022.10.20 |
---|---|
43. 내일배움캠프 - 33일차 TIL (0) | 2022.10.20 |
41. 내일배움캠프 - 31일차 TIL (0) | 2022.10.18 |
40. 내일배움캠프 - 7주차 WIL (0) | 2022.10.18 |
39. 내일배움캠프 - 30일차 TIL (0) | 2022.10.14 |
댓글