【发布时间】:2020-03-15 06:14:16
【问题描述】:
在这里,我尝试在 ajax 和 jquery 的帮助下使用我的 django 视图进行搜索。当我尝试通过返回 JsonReponse 而不是 html_template 来进行这样的搜索时,它不会在 html 中返回相应 id 以下的数据
但是当我从 django 视图返回 html 并为此搜索结果创建新 html 并将此模板包含在原始模板中时效果很好,但我发现这是一个更长的过程所以我尝试从视图返回 json 响应并使用该 json模板中的对象像这样,但它不起作用。
我该如何解决这个问题?我想我需要处理 ajax 部分。
def search_users(request):
q = request.GET.get('q')
if q:
users = get_user_model().objects.filter(is_active=True).filter(profile__full_name__icontains=q)
data = {'users': users}
else:
users = get_user_model().objects.filter(is_active=True)
data = {'users':users}
return JsonResponse(data)
ajax
$(function() {
$('#search_users').keyup(function() {
$.ajax({
type: "GET",
url: "{% url 'dashboard:search_users' %}",
data: {
'q' : $('#search_users').val(),
},
success: searchSuccess,
dataType: 'json'
});
});
});
function searchSuccess(data, textStatus, jqXHR)
{
$('#search_users_results').json(data) #doing html instead of json works after returning html from django view
}
在终端中
TypeError: Object of type QuerySet is not JSON serializable
[15/Mar/2020 14:02:53] "GET /admin/dashboard/search/users/?q=tyj HTTP/1.1" 500 22660
【问题讨论】:
-
在进行
ajax调用时,您是否在服务器端或客户端遇到任何异常? -
@Ejaz 更新了问题
-
这能回答你的问题吗? <Django object > is not JSON serializable
-
@AnuragSrivastava 是的,我做了
list(users,这个错误消失了,但搜索结果没有出现在我的 html 中?
标签: django ajax django-views