2

我正在从一个教程中练习,我已经达到了使用 jquery 和 ajax 创建一个搜索框。一切都很顺利,除了当我在搜索中按任意键时,我得到一个错误,

/articles/search 处的 RuntimeError 您通过 POST 调用了此 URL,但该 URL 没有以斜杠结尾,并且您设置了 APPEND_SLASH。Django 在维护 POST 数据时无法重定向到斜杠 URL。将表单更改为指向 localhost:8000/articles/search/(注意尾部斜杠),或在 Django 设置中设置 APPEND_SLASH=False。

我在我的代码中检查了“/”,但它在那里。不知道怎么回事。请帮忙。

应用程序的 urls.py:

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

视图.py:

def search_title(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', {'article': article})

我正在使用 jquery 版本: jquery-2.0.0.min.js

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

甚至当我检查 ajax.js 时,在最后一行

$('#search-results').html(数据);

它读作:

$('#search-results').html(日期);

我的主要网址:

(r'^articles/', 包括('article.urls')),

4

1 回答 1

2

对不起,我有一个错字。在我的views.py中:

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', **{'article': article})**

它应该是:

    return render_to_response('ajax_search.html', **{'articles':articles})**
于 2013-08-10T19:04:35.367 回答