2017-10-19 33 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?