Python 仅在Django中StreamingHttpResponse中的模板上呈现当前状态
当我使用StreamingHttpResponse时,我试图在前端向用户显示处理状态 我能够获取当前状态,但它将附加到上一个状态。Python 仅在Django中StreamingHttpResponse中的模板上呈现当前状态,python,django,python-3.x,python-2.7,python-requests,Python,Django,Python 3.x,Python 2.7,Python Requests,当我使用StreamingHttpResponse时,我试图在前端向用户显示处理状态 我能够获取当前状态,但它将附加到上一个状态。 我希望响应模板只包含当前产量 def f1(): x = 1 while x < 5: time.sleep(1) x += 1 s = str() for i in range(1,x): s+= """<p>{}</p>""".f
我希望响应模板只包含当前产量
def f1():
x = 1
while x < 5:
time.sleep(1)
x += 1
s = str()
for i in range(1,x):
s+= """<p>{}</p>""".format(str(i))
code = s
yield code
views.py
从django.exe导入渲染
从django.http导入StreamingHttpResponse,HttpResponse
导入时间
def f1():
x=0
而x你不能这样做
def home(request):
return StreamingHttpResponse(f1())
StreamingHttpResponse
表示您希望缓慢地流式处理数据,而不是一次处理。现在,一旦您将1
放在流上,您就不能将其回调并使其消失
因此,在如何使其工作方面,您几乎没有选择
AJAX
您可以从页面进行AJAX调用,更新最新状态,并使用javascript进行更新
在这种情况下,您也可以将现有设置用于
然后显示最后一行,我不推荐这样做
接下来是创建一个只返回当前状态的Ajax方法
Socket.io
您可以使用相同的
Django频道
你可以用
但是添加sockets
和channels
对于您的问题来说是一个额外的复杂性。所以你应该试着用纯AJAX解决你的问题嗯,那是什么?多重回报?
def f1():
x = 1
while x < 5:
time.sleep(1)
x += 1
s = str()
for i in range(1,x):
s+= """<p>{}</p>""".format(str(i))
code = s
yield code
def home(request):
for z in f1():
return StreamingHttpResponse(z)
def home(request):
return StreamingHttpResponse(f1())