我有一个程序,可以逐步打印数据。
前:
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')
如何实现多输出?
答案 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)