请求get对象时django MultiValueDictKeyError

Aae*_*onn 5 forms django 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_date_from']
        pub_to = request.GET['pub_date_to']

        return super(SingleNewsView,self).get(request,pk, **kwargs)
Run Code Online (Sandbox Code Playgroud)

我的表单字段是pub_date_frompub_date_to.当我运行网站时,它说:
MultiValueDictKeyError .

我不知道发生了什么事.当我删除两行获取pub_from并且pub_to网站工作正常.我希望这两个值来过滤查询集.

任何帮助PLZ

Roh*_*han 8

在第一次请求时,没有提交表单数据,因此request.GET不会有任何数据.这样做request.GET['pub_date_from']会失败.你应该使用.get()方法

pub_from = request.GET.get('pub_date_from')
pub_to = request.GET.get('pub_date_to')
Run Code Online (Sandbox Code Playgroud)

如果这些键不在dict中,将返回None.因此,在代码中适当处理这些情况.

此外,如果要过滤ListViewadd get_queryset()方法的对象以返回过滤的查询集,如此处所述,动态过滤