2015-02-06 65 views
0

我正在做一個Django項目,並且在我的本地主機站點上,我在該站點上創建了一個搜索欄。但是,在給定輸入時,該搜索欄不會返回任何結果。我查看網頁源代碼,我發現,我從來沒有把一些臺詞:搜索欄無法在Django站點上運行

<input type='hidden' name='csrfmiddlewaretoken' value=(deleted for security purposes on Stack Overflow /> 

然後我用Ubuntu的我的Firefox瀏覽器檢查元素功能,當我刷新頁面後跑了網絡監視器,我這樣的:

GET http://127.0.0.1:8000/static/assets/css/default.css [HTTP/1.0 304 NOT MODIFIED 5ms] 
GET http://127.0.0.1:8000/static/assets/js/jquery-2.1.3.min.js [HTTP/1.0 304 NOT MODIFIED 8ms] 
GET http://127.0.0.1:8000/static/assets/js/ajax.js [HTTP/1.0 304 NOT MODIFIED 11ms] 

當我在一些輸入進入,我得到了這條線:

POST http://127.0.0.1:8000/articles/search/ [HTTP/1.0 404 NOT FOUND 13ms] 

這裏是我的ajax.js文件:

$(function() { 

    $('#search').keyup(function() { 

     $.ajax({ 
      type: "POST", 
      url: "/articles/search/", 
      data: { 
       'search_text' : $('#search').val(), 
       'csrfmiddlewaretoken' : 
       $("input[name=csrfmiddlewaretoken]").val() 
      }, 
      success: searchSuccess, 
      dataType: 'html' 
     }); 
    }); 
}); 

function searchSuccess(data, textStatus, jqXHR) 
{ 
    $('#search-results').html(data); 
} 

在我的urls.py文件,我有這條線,使搜索:

url(r'^search/', 'article.views.search_titles'), 

而在我的views.py文件,我有這個search_titles功能:

def search_titles(request): 
    if request.method == "POST": 
     search_text = request.POST['search_text'] 
    else: 
     search_text = '' 

    articles = Article.objects.filter(title__contains=search_text) 

    return render_to_response('ajax_search.html', {'articles' : articles}) 

我不不知道我在做什麼導致搜索欄無法正常工作,但請告訴我是否需要查看更多源代碼,並編輯此帖。謝謝。

回答

2

url規則應該是

url(r'^articles/search/', 'article.views.search_titles'),

url(r'^search/', 'article.views.search_titles'),

你需要以追加"articles",以配合您的網址Ajax調用"/articles/search/"

+0

這工作。謝謝。 – brown1001 2015-02-06 17:36:04

+0

@ brown1001如果這個答案對你有幫助,你可以點擊檢查標記爲正確答案。謝謝。 – levi 2015-02-06 17:39:08