Как сделать переменную url доступной для всех шаблонов

У меня есть конкретное требование - скажем, я ввожу url, как показано ниже -

http://127.0.0.1:8000/brand_product_list/1

В приведенном выше url последняя 1 - это brand-id, и мне нужно, чтобы этот brand-id был доступен для всех шаблонов, например, если я вызываю

мой список brand_product_list выглядит следующим образом в views.py -

# Product List as per Brand1
def brand_product_list(request,brand_id):
    brandid = brand_id
    brand_b=Brand.objects.get(id=brand_id)    
    cats_b=Product.objects.filter(brand=brand_b).distinct().values('category__title','category_id')
    data_b=Product.objects.filter(brand=brand_b).order_by('-id')
    colors_b=ProductAttribute.objects.filter(brand=brand_b).distinct().values('color__title','color__id','color__color_code')
    sizes_b=ProductAttribute.objects.filter(brand=brand_b).distinct().values('size__title','size__id')
    flavors_b=ProductAttribute.objects.filter(brand=brand_b).distinct().values('flavor__title','flavor__id')
    
    return render(request,'brand_product_list.html',
    {
        'data_b':data_b,
        'brandid':brandid,
        'cats_b':cats_b,
        'brand_b':brand_b,
        'sizes_b':sizes_b,
        'colors_b':colors_b,
        'flavors_b':flavors_b,
    })

В приведенном выше коде мне нужно, чтобы brandid был доступен в cart.html, который вызывается при нажатии на кнопку cart в base.html, который расширяется в brand_product_list.html

Дело в том, что поскольку base.html расширен в brand_product_list.html, brandid доступен в base.html (значит дочерняя переменная доступна в родительской) и я могу фильтровать товары по бренду, но почему-то когда я нажимаю на кнопку корзины в base.html, тот же brandid не попадает в cart.html, хотя base.html расширен в cart.html (значит родительская переменная не доступна в дочерней).

Я попробовал включить как показано ниже

{% include "./brand_product_list.html" %}

но поскольку в brand_product_list.html есть некий filter.html, он выдает ошибку, что аргумент недоступен --

NoReverseMatch at /cart
Reverse for 'filter_data_b' with arguments '('brandid',)' not found. 1 pattern(s) tried: ['filter_data_b/(?P<brand_id>[0-9]+)$']
Request Method: GET
Request URL:    http://127.0.0.1:8000/cart
Django Version: 3.2.8
Exception Type: NoReverseMatch
Exception Value:    
Reverse for 'filter_data_b' with arguments '('brandid',)' not found. 1 pattern(s) tried: ['filter_data_b/(?P<brand_id>[0-9]+)$']
Exception Location: C:\Users\j1011470\Documents\Personal\Business\env\lib\site-packages\django\urls\resolvers.py, line 694, in _reverse_with_prefix
Python Executable:  C:\Users\j1011470\Documents\Personal\Business\env\Scripts\python.exe
Python Version: 3.8.8
Python Path:    
['C:\\Users\\j1011470\\Documents\\Personal\\Business\\Pitaara',

Прошу Вас помочь в данной ситуации.

Есть ли возможность использовать context_processor с запросом и одним аргументом? Или каким-то другим способом...

Я пробовал разные вещи, некоторые работали, некоторые нет - я чувствую, что способ сделать это сохранить brandid в сессии, в тот момент, когда url нажимается, как показано ниже -

# Product List as per Brand1
def brand_product_list(request,brand_id):
    request.session['prod_brand'] = brand_id
    brandid = brand_id
    brand_b=Brand.objects.get(id=brand_id)    
    cats_b=Product.objects.filter(brand=brand_b).distinct().values('category__title','category_id')
    data_b=Product.objects.filter(brand=brand_b).order_by('-id')
    colors_b=ProductAttribute.objects.filter(brand=brand_b).distinct().values('color__title','color__id','color__color_code')
    sizes_b=ProductAttribute.objects.filter(brand=brand_b).distinct().values('size__title','size__id')
    flavors_b=ProductAttribute.objects.filter(brand=brand_b).distinct().values('flavor__title','flavor__id')
    
    return render(request,'brand_product_list.html',
    {
        'data_b':data_b,
        'brandid':brandid,
        'cats_b':cats_b,
        'brand_b':brand_b,
        'sizes_b':sizes_b,
        'colors_b':colors_b,
        'flavors_b':flavors_b,
        'prodbrand':request.session['prod_brand'],
    })
Вернуться на верх