请求get对象时出现django多值DictKeyError

请求get对象时出现django多值DictKeyError,django,forms,request,Django,Forms,Request,我已经制作了一个表单来过滤ListView class SingleNewsView(ListView): model = News form_class = SearchForm template_name = "single_news.html" def get(self, request, pk, **kwargs): self.pk = pk pub_from = request.GET['pub_d

我已经制作了一个表单来过滤
ListView

class SingleNewsView(ListView):
    model = News
    form_class = SearchForm
    template_name = "single_news.html"

    def get(self, request, pk, **kwargs):
        self.pk = pk

        pub_from = request.GET['pub_date_from']
        pub_to = request.GET['pub_date_to']
        
        return super(SingleNewsView,self).get(request,pk, **kwargs)
我的表单字段是
pub\u date\u from
pub\u date\u to
。当我运行该站点时,它会显示:
多值DICTKEYERROR


我不知道发生了什么事。当我删除从获取
pub_和从
获取
pub_到
这两行内容时,网站运行良好。我需要这两个值来过滤查询集。

在第一次请求时,没有提交表单数据,因此
请求。GET
将没有任何数据。这样做
request.GET['pub\u date\u from']
将失败。您应该使用
.get()
方法

pub_from = request.GET.get('pub_date_from')
pub_to = request.GET.get('pub_date_to')
如果这些键不在dict中,将返回
None
。因此,请在代码中适当地处理此类情况


另外,如果要为
ListView
过滤对象,请添加
get\u queryset()
方法以返回过滤后的queryset,如此处所述

您是否使用
get
方法提交表单?您可能想尝试使用
请求。POST
。是的,我正在使用GET提交。波斯特不起作用。从一次中删除pub_date_并运行站点,然后再次将其运行。但从一开始就不管用(