Кнопка "Почему понравилось" меняется на кнопку "Нравится", если комментарий получил отметку "Нравится" - PullRequest
0 голосов
/ 07 мая 2020

Я новичок в django, я работаю над веб-сайтом, где пользователи могут оставлять комментарии, а также лайкать комментарии. Я использую Ajax, чтобы избежать перезагрузки страницы, когда понравился комментарий. Проблема, с которой я столкнулся, когда пользователю нравится комментарий, он отображает «LIKED» из «LIKE». он отлично работал с Ajax, но когда я перезагружаю свой браузер, кнопка меняется с «LIKED» на «LIKE». Я думаю, эта проблема может быть во взглядах. Как сделать так, чтобы LIKED BUTTON не изменился на LIKE BUTTON при перезагрузке браузера?

Шаблон: ajax_like_comment. html

<form action="{% url 'site:comment_like' %}" method="POST" id="user-comment{{ comment.id }}">
      {% csrf_token %}
      {% if comment.liked_comment %}
      <button type="submit" name="comment_id" value="{{ comment.id }}" class="like-comment">
      Liked</button>
      {% else %}
      <button type="submit" name="comment_id" value="{{ comment.id }}" class="like-comment">
       Like</button>    
      {% endif %}
    </form> 

Шаблон: home. html

{% for comment in post.comments.all %}
<div class="row comment-row">
<div class="user-comment-text truncate card-meta dark-grey-text">
<a href="{% url 'site:profile-view' comment.user %}">
{{ comment.user.username }}</a> {{ comment.comment_post }}
</div>

<div id="user-comment">
{% include 'ajax_like_comment.html' %}
</div>
</div>

Views.py

@login_required
def home_view(request):
    all_comments = Comments.objects.filter(
    Q(user=request.user, active=True)|
    Q(user__from_user__to_user=request.user, active=True)|
    Q(user__to_user__from_user=request.user, active=True)|
    Q(user__profile__friends__user=request.user, active=True))
posts = Comments.objects.filter(pk__in=all_comments)
for comment in posts:
    print(comment)
    print(comment.likes.filter(id=request.user.id).exists())
    if comment.likes.filter(id=request.user.id).exists():
        comment.liked_comment = True
    else:
        comment.liked_comment = False

if request.is_ajax():
    html = render_to_string('ajax_like_comment.html', request=request)
    return JsonResponse({'form': html})
return render(request,'home.html')

@login_required
def comment_like_view(request):
    comment = get_object_or_404(Comments, id=request.POST.get('id'))
    comment.liked_comment = False
    if comment.likes.filter(id=request.user.id).exists():
        comment.likes.remove(request.user.profile)
        comment.liked_comment = False
    else:
        comment.likes.add(request.user.profile)
        comment.liked_comment = True

context = {'comment': comment}

if request.is_ajax():
    html = render_to_string('ajax_like_comment.html', context, request=request)
    return JsonResponse({'form': html})
return HttpResponseRedirect(request.META.get('HTTP_REFERER'))

Ajax:

<script type="text/javascript">
$(document).on('click', '.like-comment', function(event){
  event.preventDefault();
  var pk = $(this).attr('value');
  $.ajax({
    type: 'POST',
    url: "{% url 'site:comment_like' %}",
    headers: { 'X-CSRFToken': $('input[name=csrfmiddlewaretoken]').val() },
    data: {'id':pk},
    dataType: 'json',
    success: function(response) {
      $('#user-comment'+pk).html(response['form'])
      console.log($('#user-comment'+pk).html(response['form']));
    },
    error: function(rs, e) {
      console.log(rs.resopnseText);
    },
  });
});
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...