1
我打算由Django編寫一個搜索應用程序。
當我重定向到結果頁面時,出現NoReverseMatch
錯誤。
我張貼在這裏我的代碼http://pastebin.com/AL4rG9NUNoReverseMatch錯誤,同時重定向到結果頁
或者你可以在下面
urls.py
urlpatterns = patterns('pylucene.views',
(r'^$', 'index'),
(r'^search/$', 'search'),
)
views.py
def index(request):
return render_to_response('pylucene/index.html', context_instance=RequestContext(request))
def search(request):
query = request.POST['query']
search_results = search_files(query)
return HttpResponseRedirect(reverse('pylucene.views.results', args=(search_results,)))
的錯誤閱讀:
NoReverseMatch at /pylucene/search/ Reverse for 'pylucene.views.results' with arguments '([(u'Documents\\Dieu khien may tinh bang y nghi.txt', u'Dieu khien may tinh bang y nghi.txt'), '1 total matching documents.'],)' and keyword arguments '{}' not found.
def results(request, search_results):
return render_to_response('pylucene/results.html', {'search_results': search_results}, context_instance=RequestContext(request))
我看了幾個類似的話題,但我解決不了我的問題。 請幫幫我。
非常感謝。
謝謝sacabuche。所以,我有個問題要問你。我閱讀了Django的教程https://docs.djangoproject.com/zh/dev/intro/tutorial04/,並且此文檔說「在成功處理POST數據後,應始終返回HttpResponseRedirect」 爲什麼只使用render_to_response而沒有HttpResponseRedirect? 非常感謝你 –
@chuot你是completyli rigth,我完全錯過了,但也許這[其他問題](http://stackoverflow.com/questions/46585/when-do-you-use-post-and-當你使用得到)將解釋爲什麼我認爲這是GET而不是POST。這裏重要的是爲什麼我們應該使用HttpResponseRedirect,原因是因爲您修改了某些內容,而您不希望這發生兩次。 (我的代碼被修改) – sacabuche
我閱讀了你的建議。我認爲我的應用程序應該使用GET而不是POST,因爲它只是檢索沒有更改數據的信息。感謝sacabuche。 –