django 中没有出现预期的输出

问题描述 投票:0回答:2

我正在尝试使用 python beautiful soup 框架从网站上删除大型菜单!

for i in menu_items('https://natureshair.com.au/'):
   print(json.dumps(i, indent=6))

输出很好!我可以选择不同级别的菜单!

现在我想在浏览器中查看结果,所以我使用 Django 框架在浏览器中显示此输出

这是我的views.py代码

def say_hello(request): 
    for i in menu_items('https://natureshair.com.au/'):
       return HttpResponse(json.dumps(i, indent=6))

但我在浏览器中只获得第一级菜单列表!不知道我在哪里错过了什么

请让我知道我在这里缺少什么?

python python-3.x django django-views
2个回答
0
投票

使用 JsonResponse 而不是 HttpResponse

from django.http import JsonResponse
def say_hello(request): 
    for i in menu_items('https://natureshair.com.au/'):
        return JsonResponse(i)

0
投票

您枚举了结果,但您从获得第一项开始就返回响应。这意味着它返回 that 项的结果。

因此,您应该首先收集所有结果,然后转储该斑点:

def say_hello(request):
    results = list(menu_items('https://natureshair.com.au/'))
    return JsonResponse({'results': results})
© www.soinside.com 2019 - 2024. All rights reserved.