首页 > 解决方案 > 返回 JSON 查询集进行搜索

问题描述

我正在尝试编写一个函数来搜索并将其结果以 JSON 格式显示给用户。

目前,我正在从数据库中成功搜索,我可以在产品属性中找到并列出数据库中的数据。但是当我从数据库返回产品列表时,我遇到了显示结果的问题。

def search_titles(request):

    if request.method == "POST":
        search_text = request.POST['search_text']
    else:
        search_text =  ''

    products = Product.objects.filter(title__contains = search_text)

    return HttpResponse(json.dump(products), content_type = 'application/json')

我无法向用户显示结果。如何返回产品列表并显示项目?

标签: pythondjango

解决方案


我会看看jsonresponse

def search_titles(request):

    if request.method == "POST":
        search_text = request.POST['search_text']
    else:
        search_text =  ''

    products = Product.objects.filter(title__contains = search_text)
    products = list(products)  # important: convert the QuerySet to a list object

    return JsonResponse({'products':products})

使用 HttpResponse:

def search_titles(request):

    if request.method == "POST":
        search_text = request.POST['search_text']
    else:
        search_text =  ''

    products = Product.objects.filter(title__contains = search_text)
    products = serializers.serialize('json', products)

    return HttpResponse(json.dumps(products), content_type = 'application/json')

注意:我使用了 json.dumps() 而不是 json.dump() ,它需要一个文件对象并将 JSON 转储到它。


推荐阅读