gpt4 book ai didi

python - 仅在 Django 中的 StreamingHttpResponse 中的模板上呈现当前状态

转载 作者:太空狗 更新时间:2023-10-29 17:48:47 34 4
gpt4 key购买 nike

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

我能够获得当前状态,但它被附加到前一个状态。
我希望响应模板仅包含当前产量。

views.py

from django.shortcuts import render
from django.http import StreamingHttpResponse,HttpResponse
import time

def f1():
x = 0
while x<5:
time.sleep(1)
x = x+1
code = """<p>{}</p>""".format(x)
yield code


def home(request):
return StreamingHttpResponse(f1())

output in the browser

 <p>1</p>
<p>2</p>
<p>3</p>
<p>4</p>

expected output

第一名:<p>1</p>

第二:<p>2</p>而不是 <p>1</p><p>2</p>

第三:<p>3</p>而不是 <p>1</p><p>2</p><p>3</p>

第四:<p>4</p>而不是 <p>1</p><p>2</p>3<p></p>4<p></p>

我希望用当前产量填充模板,而不是附加以前的产量。

最佳答案

你不能这样做。

def home(request):
return StreamingHttpResponse(f1())

A StreamingHttpResponse意味着您想缓慢地传输数据而不是一次性传输数据。现在,一旦您放置了 <p>1</p>在流中,您不能只是将其回调并使其消失

因此,关于如何让它发挥作用,您几乎没有选择。

AJAX

您可以从该页面进行 AJAX 调用以更新最新状态,然后您可以使用 javascript 进行更新

在这里你也可以使用你现有的设置

jQuery read AJAX stream incrementally?

然后显示最后一行,不过我不推荐这样做

下一步是制作一个只返回当前状态的 Ajax 方法

Socket.io

您可以使用 django-socketio同样

Django channel

您可以使用 django-channels

但是加上socketschannels将是您的问题的附加复杂性。所以你应该尝试用纯 AJAX 解决你的问题

关于python - 仅在 Django 中的 StreamingHttpResponse 中的模板上呈现当前状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49391687/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com