ListView с дополнительным аргументом

Я хочу добавить параметр somevar к моему listview:

{% url 'products' somevar %}?"

в урлах:

path("products/<int:somevar>", ProductListView.as_view(), name = 'products'),

во взглядах:

class ProductListView(ListView):
    def get_template_names(self):
        print(self.kwargs) # {"somevar": xxxxx}
        return f"{TEMPLATE_ROOT}/products.html"

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        self.get_products().order_by("number")
        print(kwargs) # kwargs is {} here
        return context
    
    def get_queryset(self):
        return super().get_queryset().order_by("number")

Как передать переменную в метод get_context_data? Я пытался определить метод get и вызвать self.get_context_data(**kwargs) внутри него, но это приводит к ошибке object has no attribute 'object_list'.

Класс View имеет другой kwargs, чем get_context_data метод

Параметры kwargs в View содержат параметры URL

Переданные в метод kwargs get_context_data передаются шаблону для рендеринга

Поскольку вы хотите получить доступ к параметру URL в get_context_data, вы должны использовать self.kwargs (self относится к вашему классу View)

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