Django视图收益与产量?

时间:2018-09-19 10:08:39

标签: python django

这可能是一个很奇怪或愚蠢的问题,但是为什么我不能在Django视图中使用yield而不是return
可以说我有一个简单的观点:

def return_index(request):
    return render(request, 'index.html')

为什么下一个视图在Django中不起作用:

def yield_index(request):
    list_of_templates = ['index.html', 'foo.html', 'bar.html']
    for i in range(len(list_of_templates)):
        time.sleep(5)
        yield render(request, list_of_templates[i])

假设yield_index视图将每5秒返回一次不同的视图。

1 个答案:

答案 0 :(得分:1)

使用StreamingHttpResponse

例如在view.py中:

import time
from django.http import StreamingHttpResponse
# Create your views here.
def yield_index(t):
    list_of_templates = ['index.html', 'foo.html']
    for i in range(len(list_of_templates)):
        time.sleep(t)
        yield list_of_templates[i] #render(request, list_of_templates[i])

def home(request):
    return StreamingHttpResponse(yield_index(5))