Django.urls.exceptions.NoReverseMatch: Обратное соответствие для 'like_qa' с аргументами '('',)' не найдено

У меня есть приложение Django с кнопкой like, которое я реализовал на основе этого учебника. URL отличается в моем приложении, потому что я не ставлю 'id' в URL, а только slug.

При нажатии на кнопку "Мне нравится" счетчик добавляет лайки, но не показывает обновленный счетчик, пока страница не обновится. Я получаю следующую ошибку каждый раз, когда нажимаю на кнопку "Мне нравится":

Traceback (most recent call last):
...
django.urls.exceptions.NoReverseMatch: Reverse for 'like_qa' with arguments '('',)' not found. 1 pattern(s) tried: ['like_qa/(?P<slug>[-a-zA-Z0-9_]+)/$']
[17/Mar/2022 12:44:49] "POST /like_qa/how-to-add-products-to-the-catalog/ HTTP/1.1" 500 149900

views.py

@login_required
def LikeQA(request, slug):
    article = get_object_or_404(QA, slug=slug)
    liked = False
    if article.likes.filter(id=request.user.id).exists():
        article.likes.remove(request.user)
        liked = False
    else:
        article.likes.add(request.user)
        liked = True

    context = {
        'like': article,
        'liked': liked,
        'total_likes_qa': article.total_likes_qa(),
    }
    if request.is_ajax():
        html = render_to_string('components/like_section_ajax.html', context, request=request)
        return JsonResponse({'form': html})

urls.py

path('like_qa/<slug:slug>/', views.LikeQA, name='like_qa'),

like_section_ajax.html

{% if request.user.is_authenticated %}
<form action="{% url 'like_qa' qa.slug %}" method="POST">
    {% csrf_token %}
    {% if liked %}
    <button type="submit" id="like" name="qa_slug", value="{{qa.slug}}" class="btn btn-clicked"><i class='bx bxs-like'></i></button>
    {% else %}
    <button type="submit" id="like" name="qa_slug", value="{{qa.slug}}" class="btn btn-to-be-clicked"><i class='bx bx-like'></i></button>
    {% endif %}
    {{ total_likes_qa }} like{{ total_likes_qa|pluralize }}
</form>
{% endif%}

QADetail.html

<script type="text/javascript">

$(document).ready(function(event){

  $(document).on('click', '#like', function(event){
    event.preventDefault();
    var slug = $(this).attr('value');
    $.ajax({
      type: 'POST',
      url: '{% url "like_qa" qa.slug %}',
      data: {'slug':slug, 'csrfmiddlewaretoken': '{{ csrf_token }}'},
      dataType: 'json',
      success: function(response){
        $('#like-section').html(response['form'])
        console.log($('#like-section').html(response['form']));
      },
      error: function(rs, e){
        console.log(rs.responseText);
      },
    });
  });


});

ВОПРОС

Что я упускаю в своем коде? Почему я получаю обратную ошибку при нажатии на кнопку "Мне нравится"? Как я могу это исправить?

Вернуться на верх