请求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_并运行站点,然后再次将其运行。但从一开始就不管用(