如何返回多个forloop结果(Django)

时间:2016-07-10 08:42:52

标签: python django

我有返回酒店列表的功能:

def search_result(request): 
    ......
    for hotels in json_data.get('hotelList'):
        hotel = hotels.get('localizedName')
        print hotel

    return HttpResponse(hotel)

在控制台中打印整个列表:

     ....
    Apex Temple Court Hotel
    The Connaught
    Corinthia Hotel London
    London House Hotel
    The Royal Park Hotel
    The Dorchester Hotel
    The Royal Horseguards

但只返回最后一个'皇家骑兵卫队'。 JsonResponse()也返回最后一条记录。 我应该使用什么方法返回完整列表?

2 个答案:

答案 0 :(得分:3)

您需要构建一个列表然后将其返回。

def search_result(request): 
    ......
    results = []
    for hotels in json_data.get('hotelList'):
        results.append(hotels.get('localizedName'))


    return HttpResponse(results)

要正确显示内容,您需要使用模板,而不仅仅是HttpResponse

创建这样的模板,并将其保存为示例hotels.html

{% if hotels %}
  <ul>
  {% for hotel in hotels %}
     <li>{{ hotel }}</li>
  {% endfor %}
{% endif %}

现在,在您看来:

from django.shortcuts import render

def search_result(request): 
    ......
    results = []
    for hotels in json_data.get('hotelList'):
        results.append(hotels.get('localizedName'))


    return render(request, 'hotels.html', {'hotels': results})

答案 1 :(得分:3)

您是否尝试返回整个列表而不是上次阅读和指定酒店的内容?

json_data.get('hotelList')