Шаблон не отображается в Django (NoReverseMatch)

Я не совсем уверен, в чем проблема, но у меня в проекте есть код, который при выборе даты выводит таблицу с именами студентов в классе, но Django продолжает говорить мне, что нет NoReverseMatch. Я дважды проверил и все в порядке, но не уверен, почему он не работает.

ПОКАЗАНА ОШИБКА

Повтор для 'attendance-page' с аргументами '('',)' не найден. Попытка 1 шаблона(ов): ['attendance/(?P[0-9]+)\Z']

urls.py

path('attendance_class', views.attendance_class, name='attendance-class'),
    path('attendance/<int:classPK>', views.attendance, name='attendance-page'),
    path(r'attendance/<int:classPK>/<str:date>',views.attendance, name='attendance-page-date'),
    path('save_attendance', views.save_attendance, name='save-attendance'),

views.py

@login_required
def attendance_class(request):
    classes = Room.objects.all()
    context = {}
    context['classes'] = classes
    return render(request, 'school/attendance_page.html', context)


@login_required
def attendance(request, classPK=None, date=None):
    _class = Room.objects.get(id=classPK)
    students = Student.objects.filter(id__in=ClassStudent.objects.filter(classIns=_class).values_list('student')).all()
    context = {}
    context['class'] = _class
    context['date'] = date
    att_data = {}
    for student in students:
        att_data[student.id] = {}
        att_data[student.id]['data'] = student
    if not date is None:
        date = datetime.strptime(date, '%Y-%m-%d')
        year = date.strftime('%Y')
        month = date.strftime('%m')
        day = date.strftime('%d')
        attendance = Attendance.objects.filter(
            attendance_date__year=year, attendance_date__month=month, attendance_date__day=day, classIns=_class).all()
        for att in attendance:
            att_data[att.student.pk]['type'] = att.type
    print(list(att_data.values()))
    context['att_data'] = list(att_data.values())
    context['students'] = students

    return render(request, 'school/attendance_control.html')


def save_attendance(request):
    resp = {'status': 'failed', 'msg': ''}
    if request.method == 'POST':
        post = request.POST
        date = datetime.strptime(post['attendance_date'], '%Y-%m-%d')
        year = date.strftime('%Y')
        month = date.strftime('%m')
        day = date.strftime('%d')
        _class = Room.objects.get(id=post['classIns'])
        Attendance.objects.filter(attendance_date__year=year, attendance_date__month=month,
                                  attendance_date__day=day, classIns=_class).delete()
        for student in post.getlist('student[]'):
            type = post['type['+student+']']
            studInstance = Student.objects.get(id=student)
            att = Attendance(student=studInstance, type=type, classIns=_class,
                             attendance_date=post['attendance_date']).save()
        resp['status'] = 'success'
        messages.success(request, "Attendance has been saved successfully.")
    return HttpResponse(json.dumps(resp), content_type="application/json")

Используется Jquery

<script>
    $(document).ready(function () {
        $('table td, table th').addClass('px-2 py-1')
        $('#data-form').change(function() {
            location.href = "{% url 'attendance-page' class.pk %}/" + $(this).val()
            
        })
        $('#attendance-form').submit(function (e) {
            e.preventDefault()
            var _this = $(this)
            $('.err-msg').remove();
            var el = $('<div>')
            el.addClass("alert alert-danger err-msg")
            el.hide()
            start_loader()
            $.ajax({
                url: "{% url 'save-attendance' %}",
                data: $(this).serialize(),
                method: 'POST',
                type: 'POST',
                dataType: 'json',
                error: err => {
                    console.log(err)
                    alert("An error occured ", 'error');
                    end_loader();
                },
                success: function (resp) {
                    if (typeof resp == 'object' && resp.status == 'success') {
                        el.removeClass("alert alert-danger err-msg ")
                        location.reload()
                    } else if (resp.status == 'failed' && !!resp.msg) {
                        el.html(resp.msg)
                    } else {
                        el.text("An error occured ", 'error');
                        end_loader();
                        console.err(resp)
                    }
                    _this.prepend(el)
                    el.show('slow')
                    $("html, body, .modal ").scrollTop(0);
                    end_loader()
                }
            })
        })
    })
</script>

шаблон посещаемости

Это вот эта строка location.href = "{% url 'attendance-page' class.pk %}/" + $(this).val() class.pk не определен, поэтому он пытается вызвать url с 0 аргументами, в то время как ему нужен только один.

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