带有额外参数的 ListView

ListView with an extra argument

我想将参数 somevar 添加到我的列表视图:

{% 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 class 与 get_context_data 方法

有不同的 kwargs

Viewkwargs 包含 URL 个参数

传给get_context_data方法的kwargs传给模板渲染

因为您想访问 get_context_data 中的 URL 参数,您将使用 self.kwargsself 指的是您的 View class)