Я новичок в 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>