def recomment_new(request, comment_pk): # 대댓글 달기 comment = get_object_or_404(Comment, pk=comment_pk) redirect_path = request.GET.get('next', '') # 해당 컨텐츠로 리디렉션 하기위한 url_path if request.method == 'POST': # 포스트 요청일 경우 form = ReCommentForm(request.POST, request.FILES) # 받아온 데이터를 통해 폼 인스턴스 생성 if form.is_valid(): # 폼에 데이터가 유효할 경우 recomment = form.save(commit=False) # 디비에 저장하지 않고 인스턴스 생성 recomment.user = request.user recomment.comment = comment recomment.save() # 유저와 공약 연결 후 디비에 저장 messages.success(request, '새 댓글을 저장했습니다.') return redirect(redirect_path) else: # 포스트 요청이 아닐 경우 빈 폼 생성 form = CommentForm() return render(request, 'cast/comment_form.html', { 'form': form, }) # 포스트 요청이 아닐 경우 빈 폼으로 페이지 렌더링
def congressman_detail(request, congressman_pk): # 국회의원 세부 페이지 congressman = get_object_or_404( Congressman.objects.prefetch_related('pledge_set'), pk=congressman_pk) pledge_list = congressman.pledge_set.all() comment_form = CommentForm() context = {} context['congressman'] = congressman context['pledge_list'] = pledge_list context['comment_form'] = comment_form return render(request, 'cast/congressman_detail.html', context)
def comment_list(request, pk): # 각 컨텐츠별 댓글 리스트 req_type = request.GET.get('type', '') # 요청한 컨텐츠 타입이 무엇인지 contents = get_object_or_404(Contents, pk=pk) best_comment_list = Comment.objects.filter( contents=contents).order_by('-like_number')[:5] # 좋아요 순 정렬 comment_list = Comment.objects.filter(contents=contents).exclude( id__in=best_comment_list) # 베댓 제외한 나머지 댓글 comment_form = CommentForm() context = {} context['comment_form'] = comment_form context['comment_list'] = comment_list context['best_comment_list'] = best_comment_list context['pk'] = pk return render(request, 'cast/comment_list.html', context)
def contents_detail(request, contents_pk): # 컨텐츠 세부 페이지 contents = get_object_or_404(Contents.objects.prefetch_related( 'comment_set__recomment_set__user', 'comment_set__user__profile'), pk=contents_pk) if request.user.is_anonymous: # 로그인을 안했을 경우 user_is_favorite = False else: if request.user.favorite_set.filter(contents=contents).exists(): user_is_favorite = True else: user_is_favorite = False comment_form = CommentForm() context = {} context['contents'] = contents context['comment_form'] = comment_form context['user_is_favorite'] = user_is_favorite return render(request, 'cast/contents_detail.html', context)
def pledge_detail(request, pledge_pk): # 공약 세부 페이지 pledge = get_object_or_404(Pledge.objects.prefetch_related( 'comment_set__recomment_set__user', 'comment_set__user__profile'), pk=pledge_pk) if request.user.is_anonymous: # 로그인을 안했을 경우 user_is_favorite = False else: if request.user.favorite_set.filter(pledge=pledge).exists(): user_is_favorite = True else: user_is_favorite = False comment_form = CommentForm() context = {} context['pledge'] = pledge context['comment_form'] = comment_form context['user_is_favorite'] = user_is_favorite return render(request, 'cast/pledge_detail.html', context)
def comment_new(request, pk): # 각 컨텐츠내 댓글 쓰기 req_type = request.GET.get('type', '') # 요청한 컨텐츠 타입이 무엇인지 redirect_path = request.META.get( 'HTTP_REFERER') # 해당 컨텐츠로 리디렉션 하기위한 url_path if request.method == 'POST': # 포스트 요청일 경우 form = CommentForm(request.POST, request.FILES) # 받아온 데이터를 통해 폼 인스턴스 생성 if form.is_valid(): # 폼에 데이터가 유효할 경우 comment = form.save(commit=False) # 디비에 저장하지 않고 인스턴스 생성 comment.user = request.user # 댓글을 다는 유저 정보 # 각 컨텐츠 별로 분기하여 인스턴스 생성 if req_type == 'contents': # 컨텐츠일 경우 contents = get_object_or_404(Contents, pk=pk) comment.contents = contents elif req_type == 'pledge': # 공약일 경우 pledge = get_object_or_404(Pledge, pk=pk) comment.pledge = pledge else: # 국회의원일 경우 congressman = get_object_or_404(Congressman, pk=pk) comment.congressman = congressman comment.save() # 유저와 해당 컨텐츠 연결 후 디비에 저장 return redirect(redirect_path) else: # 포스트 요청이 아닐 경우 빈 폼 생성 form = CommentForm() return render(request, 'cast/comment_form.html', { 'form': form, }) # 포스트 요청이 아닐 경우 빈 폼으로 페이지 렌더링
def comment_edit(request, comment_pk): # 해당 댓글 수정 comment = get_object_or_404(Comment, pk=comment_pk) # 해당 댓글 인스턴스 redirect_path = request.META.get( 'HTTP_REFERER') # 해당 컨텐츠로 리디렉션 하기위한 url_path if comment.user != request.user: messages.warning(request, '댓글 작성자만 수정할 수 있습니다.') return redirect(redirect_path) form = CommentForm(request.POST, request.FILES, instance=comment) if form.is_valid(): comment = form.save(commit=False) comment.save() messages.success(request, '기존 댓글을 수정했습니다.') return redirect(redirect_path) else: form = CommentForm(instance=comment) return render(request, 'cast/comment_form.html', { 'form': form, })