Javascript Кнопка "Нравится" Django не обновляет счетчик

Я создал Put request для обновления количества лайков, но когда я нажимаю кнопку like, количество не изменяется, пока я не обновлю страницу. и функция like/unlike работает нормально. Может ли кто-нибудь помочь мне решить эту проблему?

view.py. Вот как я выполнил запрос put.

class PostLikeView(APIView):
    
    authentication_classes = [SessionAuthentication]
    permission_classes = [IsAuthenticated]

    def get(self, request, post_id, slug=None, format=None):
        post = Post.objects.get(pk=post_id)
        serializer = PostSerializer(post, many=False, )
        return JsonResponse(serializer.data, safe=False)

    def put(self, request, post_id, slug=None, format=None):
        post = Post.objects.get(pk=post_id)
        user = self.request.user
        # if user.is_authenticated():
        if user in post.likes.all():
                post.likes.remove(user.id)
        else:
            post.likes.add(user.id)
        serializer = PostSerializer(post, data=request.data)
        if serializer.is_valid():
            serializer.save()
        return JsonResponse(serializer.data, safe=False)

В javascript в like_button.addEventListener я вызываю функцию like post, где я передаю post_id эта функция работает, но счетчик не меняется пока я не обновлю страницу, могу ли я отредактировать так, чтобы счетчик обновлялся без обновления, если нет, то как настроить автоматическое обновление после завершения запроса put? index.js

Мне удалось решить свою проблему. Если кто-нибудь попадет в подобную ситуацию, сообщите мне. Возможно, это не самый элегантный способ решения проблемы, но он работает

 //  LIKE COUNTER
    let likes_counter = post.likes.length
    likesp.innerHTML = `Likes: ${likes_counter}`


    if (document.querySelector("#user-id") != null) {
        
        let user_id = document.querySelector("#user-id").value;
        // LIKE BUTTON
        let like_button = document.createElement('button')
        like_button.setAttribute('id', 'like-button')

        if (post.likes.indexOf(parseInt(user_id)) >= 0) {
            like_button.innerHTML = 'Unlike'
        } else {
            like_button.innerHTML = 'Like'  
        }
        
        like_button.setAttribute('type', 'submit')
       
        like_button.addEventListener('click', () => {
            
            if(like_button.innerText.toLowerCase() === 'like') {
                like_button.innerText = 'Unlike';
                likes_counter ++    
              }
              else {
                like_button.innerText = 'Like';
                likes_counter -- 
              }
              likesp.innerHTML = `Likes: ${likes_counter}`
            like_post(post_id, post.likes);  
        })
        likesdiv.append(like_button)
    } 
Вернуться на верх