我正在向我的 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>
搜索.js
function search_submit() {
var query = $("#id_query").val();
$("#search-results").load(
"/search/?q=" + encodeURIComponent(query)
);
return false;
}
视图.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” :((
谢谢!!!