Django& AJAX搜索视图给我KeyError

时间:2013-08-12 08:35:48

标签: jquery ajax django django-class-based-views

我正在为我的Django博客应用程序添加一个AJAX搜索功能。

这是我的代码:

search_form.html

<form id="search-form" method="get" action="{% url 'search' %}">
    <input type="text" name="q" />
    <input type="submit" value="Submit" />
</form>

<div id="search-results">
    {% include "post_list.html" %}    //html file which simply views all the requested posts
</div>

search.js

function search_submit() {
    var query = $("#id_query").val();

    $("#search-results").load(
        "/search/?q=" + encodeURIComponent(query)
    );

    return false;
}

views.py

class PostSearch(ListView):
    model = Post
    template_name = 'search_form.html'
    context_object_name = 'post_list'

    def get(self, request, *args, **kwargs):
        if self.request.is_ajax():              
            return self.render_to_response('post_list.html', self.get_context_data(**kwargs))
        else:
            return self.render_to_response(self.template_name, self.get_context_data(**kwargs))

    def get_queryset(self):
        queryset = super(TitleSearchMixin, self).get_queryset()

        q = self.request.GET.get('q')

        if q:
            return queryset.filter(question_title__icontains=q)

基本上,我的QuestionSearch视图只返回一个“post_list.html”,它是一个模板,用于查看AJAX请求的多个帖子,同时在正常请求时返回整个“search_form.html”。出于某种原因,这给了我错误:

错误:

KeyError at /search/
u'object_list'

由于我被困,我有两个问题..

(1)为什么会出现这种错误?

(2)我的搜索功能实现是否以正确的方式完成..?我一直在阅读有关RESTf API设计的内容,但我不确定我的是否是“RESTful”:((

感谢!!!

1 个答案:

答案 0 :(得分:0)

如果要迭代post_list变量或object_list,

可以检查post_list.html。

如果您正在迭代(循环)object_list将其更改为post_list或删除类PostSearch(ListView)中的context_object_name ='post_list':

Q2,你正在做的是一个普通的ajax,restful API需要序列化和CRUD操作 例如GET阅读 POST / PUT插入/更新 删除删除

等..