Django中的多个HttpResponses

时间:2015-03-04 02:24:51

标签: python django httpresponse

我有一个程序,可以逐步打印数据。

前:

data = {'a', 'b'}
for op in data:
    if op == 'a':
        print 'Hello'
    elif op == 'b':
        print 'Bye'

这是我的django项目中views.py类的功能布局。每个print语句都需要在浏览器上输出。我知道我可以使用

进行单一回复
return HttpResponse('Hello')

或只是

return Response('Hello')

如何实现多输出?

3 个答案:

答案 0 :(得分:1)

来自Django docs for HttpResponse:

...如果要逐步添加内容,可以将响应用作类文件对象:

>>> response = HttpResponse()
>>> response.write("<p>Here's the text of the Web page.</p>")
>>> response.write("<p>Here's another paragraph.</p>")

https://docs.djangoproject.com/en/1.7/ref/request-response/#passing-strings

答案 1 :(得分:0)

您需要在上下文中传递列表,然后遍历模板中的列表。例如:

views.py

def indexview(request):
    data = []
    for item in items_list:
        data.append(item)
    return render(request, 'index.html', {'data': data}

的index.html

{% for item in data %}
     {{ item }}
{% endfor %}

答案 2 :(得分:0)

我认为你想使用模板系统。 (见混合答案)。

但是,您可以pass an iterator而不是HttpResponse的字符串,如有必要,您可以使用StreamingHttpResponse流式传输结果。

def someview(request):
    def mygen(data):  # generator
        for key, value in data.items():
            yield value

    data = {'a': 'Hello', 'b': 'Bye'}
    g = mygen(data)    
    return StreamingHttpResponse(g)