2017-10-19 70 views
0

我已经实现了Django过滤器的一个非常标准的用法,并且我注意到当我提交我的查询时,URL不仅填充了我输入的过滤器,而且还为每个过滤器我没有。从URL中删除不必要的过滤器django-filter

例如,当我填写刚刚STATUS_CODE过滤器,然后在我的网站上搜索,我得到

http://localhost:8888/request-log/?status_code=200&route=&time_sent_0=&time_sent_1=&python_error_msg=&s3_upload_failed=&s3_error_msg= 

理想情况下,我想的URL,只显示字段不为空。所以,它会去

http://localhost:8888/request-log/?status_code=200 

这样做的最佳方法是什么?

+2

由于您没有包含任何代码,我猜你正在使用GET表单。提交表单按钮后,网址就会被填充。您将不得不拦截按钮并写入JavaScript以将请求发送到您的服务器(这是您将删除不必要的GET参数的地方)。 – anupsabraham

回答

1

只是为了扩展@anupsabraham的说法,这是一个关于HTML表单使用的常见问题,并且并不特定于django-filter。

一种选择是在窗体中使用method="POST"而不是method="GET",它将提交数据作为请求主体的一部分而不是查询字符串。

或者,您可以使用javascript截取表单的提交事件,并过滤空输入。例如:jquery: how to remove blank fields from a form before submitting?