2015-12-01 70 views
0

我有沒有返回任何結果,或者是給404的一些鏈接查詢的網址有「%2520」,如搜索表單:http://www.website.com/search/?q=some%2520keywords刪除Django的2520%和request.GET中更新搜索查詢

我試圖從查詢中刪除'%2520',並同時更新request.GET的值。

這是我試圖去了解它:

q = { 'q': request.GET.get('q') } 
urllib.urlencode(q) 
request.GET = request.GET.copy() 
request.GET.update(q) 
form = form_class(request.GET, searchqueryset=searchqueryset, load_all=load_all) 

到目前爲止沒有運氣。我錯過了什麼?

回答

0

假設你form_class正確詢問了正確的結果:
您是雙重編碼的URL,這樣的空格字符顯示爲%2520代替%20在這個答案說明https://stackoverflow.com/a/16085190/4724196

你只需要這一行從代碼以上:

form = form_class(request.GET, searchqueryset=searchqueryset, load_all=load_all) 

你需要檢查你的form_class如何做過濾,然後WOR根據該K,因此,例如,形成圖基本搜索去除空間是這樣的:

  1. 分割搜索查詢的關鍵詞的數組:

    search = self.request.GET.get('q')
    kw_list = search.split()

  2. 循環通過關鍵字,同時過濾正確的結果,一個例子會是這樣的:

    Poll.objects.get(Q(title__icontains=keyword) for keyword in kw_list))

這一切都取決於你想如何篩選的結果,所以要去除空格只是做.split()

+0

我明白這是如何發生的,但就是不解決我的問題,因爲谷歌機器人正在索引這些鏈接不正確,並給我404錯誤。這是我試圖從url查詢中刪除空白空間並返回正確搜索結果的唯一原因。 – WayBehind

+0

所以當你刪除這些行時,所有你得到的是一個%20這是一個空間,那麼你想刪除,如果我是正確的 – HassenPy

+0

正確,我需要給沒有'%2520'的搜索表單一個乾淨的短語和沒有'%20',否則搜索頁面將不會返回結果。 – WayBehind