2015-02-06 2 views
0

Я делаю проект Django и на своем сайте localhost, я создал панель поиска на сайте. Однако эта строка поиска не возвращает никаких результатов при вводе данных. Я просмотрел исходный код страницы, и я заметил, что некоторые строки, которые я никогда не ставили в:Search Bar Не работает на сайте Django

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

я использовал Осмотреть функцию элемента в моем браузере Firefox на Ubuntu, и когда я побежал монитор сети после обновления страницы, я получил это:

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" для того, чтобы соответствовать URL вашего АЯКС позвонить "/articles/search/"

+0

Это работало. Спасибо. – brown1001

+0

@ brown1001, если этот ответ вам помог, вы можете отметить правильный ответ, щелкнув по чеку. Благодарю. – levi