Как запросить id категории в другую функцию в views.py

Изучаю Djsngo и четвертый день бьюсь над проблемой. Написал по туториалу кнопку "Load more" для страницы со всеми товарами и решил сделать такую же кнопку для страницы с товарами определенных категорий.

Мои файлы:

views.py

def product_list(request):
    total_data = Product.objects.count()
    data = Product.objects.all().order_by('-id')[:1]
    cats = Product.objects.distinct().values('category__title', 'category__id')
    return render(request, 'product_list.html',
                  {
                      'data': data,
                      'cats': cats,
                      'total_data': total_data,
                  })

def category_product_list(request, cat_id):
    category = Category.objects.get(id=cat_id)
    total_data = Product.objects.filter(category=category).count()
    data = Product.objects.filter(category=category).order_by('-id')[:1]
    return render(request, 'category_product_list.html', {'data': data, 'total_data': total_data, 'category': category})

def load_more_data(request):
    offset = int(request.GET['offset'])
    limit = int(request.GET['limit'])
    data = Product.objects.all().order_by('-id')[offset:offset+limit]
    t = render_to_string('ajax/product-list.html', {'data': data})
    return JsonResponse({'data': t})

def load_more_dataCat(request):
    offset = int(request.GET['offset'])
    limit = int(request.GET['limit'])
    data = Product.objects.filter(category=2).order_by('-id')[offset:offset+limit]
    t = render_to_string('ajax/category_product_list.html', {'data': data})
    return JsonResponse({'data': t})

custom.js

$(document).ready(function(){
    $("#loadMore").on('click', function(){
        var _currentProducts = $(".product-box").length;
        var _limit = $(this).attr('data-limit');
        var _total = $(this).attr('data-total');
        console.log(_total)

        // Start Ajax
        $.ajax({
            url:'/load-more-data',
            data:{
                limit: _limit,
                offset: _currentProducts
            },
            dataType:'json',
            beforeSend:function(){
                $("#loadMore").attr('disabled',true);
                $(".load-more-icon").addClass('fa-spin');
            },
            success:function(res){
                $("#filteredProducts").append(res.data);
                $("#loadMore").attr('disabled',false);
                $(".load-more-icon").removeClass('fa-spin');

                var _totalShowing = $(".product-box").length;
                if(_totalShowing==_total){
                    $("#loadMore").remove();
                }
            }
        });
        // End
    });
});

$(document).ready(function() {
    $("#loadMoreCat").on('click', function () {
        var _currentProducts = $(".product-box").length;
        var _limit = $(this).attr('data-limit');
        var _total = $(this).attr('data-total');
        console.log(_total)

        // Start Ajax
        $.ajax({
            url:'/load-more-dataCat',
            data:{
                limit: _limit,
                offset: _currentProducts
            },
            dataType:'json',
            beforeSend:function(){
                $("#loadMoreCat").attr('disabled',true);
                $(".load-more-icon").addClass('fa-spin');
            },
            success:function(res){
                $("#categoryProducts").append(res.data);
                $("#loadMoreCat").attr('disabled',false);
                $(".load-more-icon").removeClass('fa-spin');

                var _totalShowing = $(".product-box").length;
                if(_totalShowing==_total){
                    $("#loadMoreCat").remove();
                }
            }
        });
        // End
    });
});

Я понимаю, что в строке def load_more_dataCat data = Product.objects.filter(category=2).order_by('-id')[offset:offset+limit] надо, чтобы category в фильтре была равна cat_id, но как ее запросить, я никак не могу сообразить. Из этого же файла views.py он напрямую не берется, говорит, что ее надо объявить. Если записать ее в фильтр вручную, она работает, но справедлива только для одной категории, чью id я вписал, что логично. Как ее сделать динамической?

Я пробовал проводить всякие манипуляции и уже перебрал разные комбинации кода, но так и не нашел решения. Может быть cat_id можно вытянуть из url адреса из urls.py, там она существует в паттерне path('category-product-list/<int:cat_id>', views.category_product_list, name='category-product-list'),. Пробовал записать так:

def load_more_dataCat(request, cat_id):
    offset = int(request.GET['offset'])
    limit = int(request.GET['limit'])
    category = Category.objects.get(id=cat_id)
    data = Product.objects.filter(category=category).order_by('-id')[offset:offset+limit]
    t = render_to_string('ajax/category_product_list.html', {'data': data})
    return JsonResponse({'data': t})

и так:

data = Product.objects.filter(category=category_product_list()).order_by('-id')[offset:offset+limit]

Но все опробованое не подошло.

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