搜索栏无法在Django网站上运行

时间:2015-02-06 17:27:58

标签: javascript python ajax django django-urls

我正在做一个Django项目,在我的localhost网站上,我在网站上创建了一个搜索栏。但是,在给定输入时,该搜索栏不会返回任何结果。我查看了页面源代码,并注意到了一些我从未输入的行:

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

然后我在Ubuntu的Firefox浏览器上使用了Inspect Element功能,当我刷新页面后运行网络监视器时,我得到了这个:

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})

我不知道我在做什么导致搜索栏无法正常工作,但如果您需要查看更多我的源代码,请告诉我,我会编辑此帖子。谢谢。

1 个答案:

答案 0 :(得分:2)

您的url规则应为

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

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

您需要附加"articles"以匹配您的网址ajax调用"/articles/search/"