Урлы Django указывают неверный путь

Я пишу приложение для управления производственными машинами и столкнулся со странной проблемой, которую не могу решить.

Ранее у меня была подстраница "Сделки" с путями под одноименным описанием. Все работало очень хорошо.

Сегодня я попытался добавить еще одну подстраницу, "Сделки на человека", и началась проблема.

# Transaction
    path('transaction/machines', views.transaction_machines_list_view, name="transaction_machines_list"),
    path('transaction/machine/<int:id>', views.transaction_list_view, name="transaction_list"),
# Transaction per-Capita
    path('per_capita/employees', views.transaction_per_capita_employees_list_view, name="transaction_per_capita_employees_list"),
    path('per_capita/employee/<int:id>', views.transaction_per_capita_list_view, name="transaction_per_capita_list"),

Все пути "транзакции" работают хорошо, per_capita/employees тоже работает хорошо, но когда я пытаюсь достичь последнего, например,

http://127.0.0.1:8000/per_capita/employee/2

Я столкнулся со следующей ошибкой

NoReverseMatch at /per_capita/employee/2
Reverse for 'transaction_list' with keyword arguments '{'id': ''}' not found. 1 pattern(s) tried: ['transaction/machine/(?P<id>[0-9]+)$']

Почему мой путь с именем transaction_per_capita_list воспринимается Django как transaction_list? Само перенаправление является строкой в таблице и выглядит следующим образом:

<tr class="pointer" onclick="location.href='{% url 'transaction_per_capita_list' id=employee.id %}';">
   <td class="cell">{{ employee.username }}</td>
   <td class="cell">{{ employee.first_name }}</td>
   <td class="cell">{{ employee.last_name }}</td>
</tr>

Эти 2 представления (feom views.py) выглядят так:

# /per_capita/employees
@login_required
@permission_required('mes.view_transactionpercapita', raise_exception=True)
def transaction_per_capita_employees_list_view(request):
    data = {
        'employees': Employee.get_all()
    }
    return render(request, 'transaction_percap/employee_list.html', { 'data': data })


# /per_capita/employee/id
@login_required
@permission_required('mes.view_transactionpercapita', raise_exception=True)
def transaction_per_capita_list_view(request, id):
    employee = Employee.get_by_id(id)

    if request.GET.get('search'):
        transactions = TransactionPerCapita.find(employee, request.GET.get('search'))
    else:
        transactions = TransactionPerCapita.get_all(employee)

    paginator = Paginator(transactions, 15)
    page_number = request.GET.get('page') if request.GET.get('page') else 1
    transactions_page = paginator.get_page(page_number)

    paginator = {
        'actual_page': page_number,
        'has_next': transactions_page.has_next(),
        'has_prev': transactions_page.has_previous(),
        'last_page': paginator.num_pages
    }
    if paginator['has_next']: 
        paginator['next_page'] = transactions_page.next_page_number()
    if paginator['has_prev']: 
        paginator['prev_page'] = transactions_page.previous_page_number()

    data = {
        'employee': employee,
        'transactions': transactions_page,
        'paginator': paginator,
        'search': request.GET.get('search')
    }
    return render(request, 'transaction_percap/list.html', { 'data': data })

Я пробовал изменить путь, я пробовал переименовать его, но это ничего не дает. Что я делаю не так?

Я только что понял, что я сделал.

Это не было проблемой с моими урлами или чем-то еще, и эта ошибка была 100% правильной. В шаблоне, который я пытался отобразить, у меня было несколько ссылок, используемых paginator, вот так:

<li class="page-item">
   <a class="page-link" href="{% url 'transaction_list' id=data.machine.id %}?page={{ data.paginator.prev_page }}&search={{ data.search | default_if_none:'' }}">
      Previous page
   </a>
</li>

Как вы можете видеть, он указывает transaction_list, но у меня нет data.machine в этом представлении, поэтому оно выдает ошибку. Я очень извиняюсь за это, я не знал, что это так глупо :D

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