Почему не работает кнопка лайков/дизлайков?

Иоанн

Новичок
Пользователь
Май 9, 2022
4
0
1
Здравствуйте

реализую функционал лайков, дизлайков на django, но кнопка не срабатывает.Не могу удалить лайк.

HTML:
<form action="{% url 'forum:like-topic'  %}" method="POST">
    {% csrf_token %}

<input type='hidden' name='topic_id' value="{{ topic.id }}">
{% if user not in topic.likes.all %}
    <button class="ui button positive" type="submit">Like</button>
{% else %}
    <button class="ui button negative" type="submit">Unlike</button>

{% endif %}
    <strong>{{ topic.likes.all.count }} likes </strong>

</form>
Python:
views.py
views.py
    def like_topic(request):

user = request.user
if request.method == 'POST':
    topic_id = request.POST.get('topic_id')
    topic_obj = Topic.objects.get(id=topic_id)
    if user in topic_obj.likes.all():
        topic_obj.likes.remove(user)

    else:
        topic_obj.likes.add(user.id)
    like, created = Like.objects.get_or_create(user_id=user.id, topic_id=topic_id)
    if not created:
        if like.value == 'Like':
            like.value = 'Unlike'
        else:
            like.value = 'Like'
        like.save()

return HttpResponseRedirect(reverse('forum:topic_detail', kwargs={'slug': topic_id}))

Python:
urls.py

from django.contrib.auth.decorators import login_required
from django.db import router
from django.urls import path, include
from django.conf import settings

from rest_framework.urlpatterns import format_suffix_patterns

from . import views
from .models import Topic
from django.contrib.auth.decorators import login_required

from .views import Search, topic_view, modal_topic, ForumRulesView, modal_latest_topic, send_email, TeamView, like_topic

app_name = 'forum'

urlpatterns = format_suffix_patterns([
    path('', views.TopicListView.as_view(), name='main'),
    path('single-topic/', views.SingleTopicPageView.as_view(), name='single-topic'),
    path('search/', Search.as_view(), name='search_results'),
    path('search/<category_id>/', topic_view, name='topic_view'),
    path('<slug:slug>/', views.TopicDetailView.as_view(), name='topic_detail'),
    path('r<slug:slug>/<category_id>/', views.CategoryDetailView.as_view(), name='category_detail'),
    path("list/1/", views.TopicViewSet.as_view({'get': 'list'})),
    path("<int:pk>/", views.TopicViewSet.as_view({'get': 'retrieve'})),
    path('1/new_topics/', modal_topic, name='modal_topic'),
    path('2/latest_topic/', modal_latest_topic, name='modal_latest_topic'),
    path('3/forum_rules/', views.ForumRulesView.as_view(), name='forum_rules'),
    path('4/about_us/', views.AboutUsView.as_view(), name='about_us'),
    path('5/email_send/', send_email, name='send_email'),
    path('6/team', TeamView.as_view(), name='the_team'),
    path('lang/<lang_code>/', views.lang, name='lang'),
    path('like', like_topic, name='like-topic'),
])

# urlpatterns += [
#     path('<slug:slug>/like/', like_topic, name='like-topic'),
# ]
 

Форум IT Специалистов