Django. Оператор if в шаблоне не регистрируется при изменении переменной с False на True - PullRequest
0 голосов
/ 16 марта 2020

Когда кому-то нравится публикация, я хочу, чтобы кнопка менялась на «не нравится» вместо «нравится». Действие по удалению аналога работает, но кнопка не меняется.

В шаблоне:

<form action="{%url 'like_post' %}" method='post'>
 {% csrf_token %}
      {% if is_liked %}
          <button type='submit' name="post_id" value = "{{ post.id }}" class="btn btn-danger">Dislike</button>
      {% else %}
         <button type='submit' name="post_id" value = "{{ post.id }}" class="btn btn-primary">Like</button>
      {% endif %}

В просмотрах:

def like_post(request):
post = get_object_or_404(Post, id=request.POST.get('post_id'))
is_liked = False
if post.likes.filter(id=request.user.id).exists():
    post.likes.remove(request.user)
    is_liked = False
else:
    post.likes.add(request.user.id)
    is_liked = True
return HttpResponseRedirect(post.get_absolute_url())
...