Я не могу использовать функцию «is_liked» в forl oop домашних шаблонов, если не часть. Функция просмотра сообщений "is_liked" работает корректно. Если вошедшему в систему пользователю понравился конкретный пост, на нем появится кнопка неприязни. Но я не могу показать кнопку неприязни в списках сообщений. Я пробовал много способов сделать это, но не могу найти решение.
"если is_liked else" часть не работает дома. html
home. html:
{% for post in posts %}
<p><a class="article-content" href="{% url 'post-detail' pk=post.pk %}" >{{ post.content }}</a></p>
<a href="{% url 'post-likes' pk=post.pk %}">
{{ post.total_likes }}like{{ post.total_likes|pluralize}}
</a>
<form action="{% url 'like_post' %}" method="POST">
{% csrf_token %}
{% if is_liked %}
<button type="submit" id="like" name="post_id" value="{{ posts.id }}" class="btn btn-danger">dislike</button>
{% else %}
<button type="submit" id="like" name="post_id" value="{{ post.id }}" class="btn btn-primary">like</button>
{% endif %}
</form>
<a href="{% url 'post-detail' pk=post.pk %}">{{ post.comments.count }}comment{{ post.comments.count|pluralize }}</a>
{% endfor %}
post_detail. html:
<p>{{ posts.content }}</p>
<a href="{% url 'post-likes' pk=posts.pk %}">
{{ total_likes }}like{{ total_likes|pluralize }}
</a>
<form action="{% url 'like_post' %}" method="POST">
{% csrf_token %}
{% if is_liked %}
<button type="submit" id="like" name="post_id" value="{{ posts.id }}" class="btn btn-
danger">dislike</button>
{% else %}
<button type="submit" id="like" name="post_id" value="{{ posts.id }}" class="btn btn-
primary">like</button>
{% endif %}
</form>
views.py:
def post_detail(request, pk):
posts = get_object_or_404(post, pk=pk)
is_liked = False
if posts.likes.filter(id=request.user.id).exists():
is_liked = True
@login_required
def like_post(request):
posts = get_object_or_404(Post, id=request.POST.get('post_id'))
is_liked = False
if posts.likes.filter(id=request.user.id).exists():
posts.likes.remove(request.user)
is_liked = False
else:
posts.likes.add(request.user)
is_liked = True
context = {'posts': posts, 'is_liked': is_liked, 'total_likes': posts.total_likes(), }
# postlist on views.py:
def post_list(request):
posts = post.objects.all().order_by('-date_posted')
return render(request, 'blog/home.html', {'posts': posts, })
Я пробовал значение is_liked в списке сообщений ... но оно выдавало ошибки. Я не могу найти правильный способ сделать это.