sai*_*ati 12 python django python-2.7 python-3.x python-requests
当我使用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())
Run Code Online (Sandbox Code Playgroud)
在浏览器中输出
<p>1</p>
<p>2</p>
<p>3</p>
<p>4</p>
Run Code Online (Sandbox Code Playgroud)
预期产出
第一名: <p>1</p>
第二:<p>2</p>而不是 <p>1</p><p>2</p>
第3名:<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>
而不是追加先前的收益率,我希望模板用当前收益率填充.
Tar*_*ani 10
你不能这样做.
def home(request):
return StreamingHttpResponse(f1())
Run Code Online (Sandbox Code Playgroud)
A StreamingHttpResponse意味着您希望缓慢地流式传输数据而不是一次性.现在,一旦你把它放在<p>1</p>流上,你就不能只是回电话让它消失
所以你几乎没有选择如何使它工作.
AJAX
您可以从页面进行AJAX调用以更新最新状态,并使用javascript更新相同内容
在这方面,您也可以使用现有的设置
然后显示最后一行,我不会推荐这个
接下来是创建一个只返回当前状态的Ajax方法
Socket.io
您可以使用Django的socketio为同
Django频道
你可以使用django-channels
但是添加sockets和channels将是你的问题的附加复杂性.所以你应该试着用纯AJAX来解决你的问题
| 归档时间: |
|
| 查看次数: |
473 次 |
| 最近记录: |