带有额外参数的 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
View
的 kwargs
包含 URL 个参数
传给get_context_data
方法的kwargs
传给模板渲染
因为您想访问 get_context_data
中的 URL 参数,您将使用 self.kwargs
(self
指的是您的 View
class)
我想将参数 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
View
的 kwargs
包含 URL 个参数
传给get_context_data
方法的kwargs
传给模板渲染
因为您想访问 get_context_data
中的 URL 参数,您将使用 self.kwargs
(self
指的是您的 View
class)