Django listview从url捕获值,然后传递给模板

时间:2018-10-31 09:13:49

标签: django

我使用

从网址中获取值
def get_queryset(self):
    name= self.request.GET.get('name')

现在想将此变量传递给模板。就像: 您已搜索:{{name}}

2 个答案:

答案 0 :(得分:1)

使用此

def get_context_data(self, **kwargs):
    name = self.request.GET.get('name')
    context = super().get_context_data(**kwargs)
    context["name"] = name
    return context

现在名称变量在模板中可用

在模板中,您可以使用{{name}}

答案 1 :(得分:0)

在基于类的视图中,get_queryset用于-顾名思义-构造对象的查询集,例如,在ListView中,此查询集被传递给模板,这样一个可以呈现查询集中的项目。

在这里您想添加到上下文字典中,在这种情况下,您需要修补get_context_data [Django-doc]函数,因此:

def get_context_data(self, *args, **kwargs):
    context = super().get_context_data(*args, **kwargs)
    context['name'] = self.request.GET.get('name')
    return context

请注意,您应该返回字典,因此在这里我们更改从超级调用中获得的字典。不需要调用super().get_context_data(..)方法,例如,您可以返回仅包含所需属性的字典。但这通常不是一个好的设计,因为视图通常已经向上下文字典添加了很多数据,现在您不能再在模板中使用它。