추천 기능

게시판에서도 빠질 수(?) 없는 것이 바로 추천 기능이다.

인스타그램 클론을 만드는 과정에서 해봤기 때문에 많이 어렵진 않았다.

일단 Document 모델 안에 추천 관련 필드를 만들었다.

게시글은 여러 개가 될 수 있고, 그 게시글을 추천하는 사람도 여러 명이

될 수 있기 때문에 ManyToMany를 사용했다.

1
2
# 추천
recommend = models.ManyToManyField(get_user_model(), blank=True, related_name='recommend_doc')

그리고 view를 구현했다.

1
2
3
4
5
6
7
8
9
10
11
@login_required
def documment_recommend(request, document_slug):
document = get_object_or_404(Document, slug=document_slug)
user = request.user

if user not in document.recommend.all():
document.recommend.add(user)

referer_url = request.META.get('HTTP_REFERER')
path = urlparse(referer_url).path
return HttpResponseRedirect(path)

유저가 이미 추천을 했다면 다시 add하지 못하도록 했다.

문제는 추천을 누르면 머무르고 있던 이전 페이지로 돌아가게 했는데

이렇게 하다보니 게시글의 맨 상단으로 올라간다.

ajax로 해결해봐야겠다.

버튼은 itcm 사이트를 보고 디자인 했다.

Share