Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 仅在Django中StreamingHttpResponse中的模板上呈现当前状态_Python_Django_Python 3.x_Python 2.7_Python Requests - Fatal编程技术网

Python 仅在Django中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

当我使用StreamingHttpResponse时,我试图在前端向用户显示处理状态

我能够获取当前状态,但它将附加到上一个状态。
我希望响应模板只包含当前产量

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())