Django:在现有的 html 页面上返回 StreamingHttpResponse

2023-12-22

由于每个问题最好有一个问题,因此如果与问题的其他部分相似,请耐心等待另一个我的问题 https://stackoverflow.com/questions/29921085/django-passing-value-from-form-to-view-without-saving-into-database与同一项目相关。

情况:

我有一个 html 表单,可以在其中设置一个数字,提交后,它会被调用views.stream_response将值传递给流.py它返回一个流式Http响应并出现“虚拟”空白浏览器页面(/流响应/)其中我可以看到每秒一个渐进的数字,直到m :

   1
   2
   3
   ..
   m

流.py

import time

def streamx(m):
    lista = []
    x=0
    while len(lista) < m:      
        x = x + 1
        time.sleep(1)
        lista.append(x)
        yield "<div>%s</div>\n" % x 
        print(lista[-1])    
    return (x)

- -更新 - -

views.py

def stream_response(request):   
    test = InputNumeroForm()   
    if request.method == 'POST':
        test = InputNumeroForm(data=request.POST)
        if test.is_valid():
            m = test.cleaned_data['numero']     
            print (test)      
            print("m = ", m) 
            #resp = StreamingHttpResponse(stream_response_generator(m))
            resp = StreamingHttpResponse(stream.streamx(m))
            return resp               
        return render(request, 'homepage/provadata.html',{'user.username': request, 'test': test}, context_instance = RequestContext(request))

urls.py

...
url(r'^homepage/provadata/$', views.provadata),    
url(r'^stream_response/$', views.stream_response, name='stream_response'),
...

主页/provadata.html

<form  id="numero" action="/stream_response_bis/" method="POST">
    {% csrf_token %}
    {{test}}                                
    <input type="submit" value="to view" />
</form> 

//{{ris}} 

我尝试做一个 render_to 响应以保持不变主页/provadata.html并查看渐进列表,但是流.py无法启动,我只能看到输入的数字m在命令行上。

我尝试过THIS https://stackoverflow.com/questions/15116881/django-streaminghttpresponse-into-a-template建议中views.py

def stream_response_generator(m):    
    ris = stream.streamx(m) 
    yield loader.get_template('homepage/provadata.html').render(Context({'ris': ris}))

(adding {{ris}}到模板和
resp = StreamingHttpResponse(stream_response_generator(m)) in 流响应功能) 但我在模板上得到:

<generator object streamx at 0x0000000004BEB870>

在命令行上,它打印输入值,但不再将参数传递给stream.py。

So.. 我该如何解决这个问题?


您可以使用 StreamingHttpResponse 来指示您想要将结果流式传输回来,并且 django 附带的所有中间件都知道这一点,并相应地采取行动,不缓冲您的内容输出,而是直接发送它。

您可以使用条件装饰器禁用 ETAG 中间件。这将使您的响应通过 HTTP 流回。您可以使用像curl 这样的命令行工具来确认这一点。但这可能不足以让您的浏览器在流式传输时显示响应。为了鼓励浏览器在流式传输时显示响应,您可以将一堆空格推入管道以强制填充其缓冲区。示例如下:

from django.views.decorators.http import condition

@condition(etag_func=None)
def stream_response(request):
    resp = HttpResponse( stream_response_generator(), mimetype='text/html')
    return resp

def stream_response_generator():
    yield "<html><body>\n"
    for x in range(1,11):
        yield "<div>%s</div>\n" % x
        yield " " * 1024  # Encourage browser to render incrementally
        time.sleep(1)
    yield "</body></html>\n"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Django:在现有的 html 页面上返回 StreamingHttpResponse 的相关文章

随机推荐

  • HTML Tidy 在 JavaScript 字符串文字中的脚本标记上失败

    我在 PHP 中使用 HTML Tidy 它产生了意外的结果 因为关闭打开的标签 我在 HTML Tidy 的在线版本上尝试过这个 http www dirty
  • 安装后使用 WiX/Burn 启动应用程序

    我知道 WiX MSI 中存在类似问题 但在使用创建的引导程序 EXE 文件中启动应用程序时遇到问题Burn http en wikipedia org wiki WiX Burn安装后 我的完整包如下 如果对场景有任何影响 引导程序将以被
  • 如何在手动表单提交中添加post参数?

    我想在经过一些复杂的检查后手动提交表格 由于检查涉及用户交互 因此整个检查过程不是同步完成的 这是场景 用户单击按钮 HTML
  • 如何配置curl仅显示百分比?

    是否有一个选项可以让curl命令仅显示shell的百分比输出而不是所有这些 例如 Total Received Xferd Average Speed Time Time Time Current Dload Upload Total Sp
  • 更改聚合物纸元素默认字体

    将 Polymer Paper Elements 默认字体从 Roboto 更改为自定义字体的最佳方法是什么 我用的是 paper font common base mixin 来定义我的字体 这适用于大多数地方 但不是全部 在像这样的地方
  • gnu ld/gdb:单独的调试文件。当有太多调试信息需要链接时如何生成调试文件?

    现在有gdb and binutils支持将调试信息与要调试的二进制文件分开 描述这一点的文档可以在以下位置找到 gdb 单独的调试文件 http sourceware org gdb onlinedocs gdb Separate Deb
  • konvajs 序列化包含图像的阶段

    我正在使用 Konvajs 创建一个自定义标签制作器 一切都运行良好 直到我尝试将阶段序列化为 JSON 用户通过三个步骤创建自定义标签 第一步 他们从我们的库中选择一个具有遮罩区域的模板图像 第二步允许他们上传个性化图像 该图像放置在第一
  • PHP - 如何将命名变量放入字符串中并在变量之前定义字符串

    我正在寻找 php 相当于pythons 操作员 https stackoverflow com a 2962966 1695680 PYTHON Example foo variable string baz characters new
  • node.js - 流文件而不临时保存它

    这是我的设置 我有一个客户端 文件从该客户端上传到node js服务器 serverA 我想从那里将 文件流式传输到另一台服务器 serverB without临时保存文件 在服务器 A 上 实现这一目标的最简单和最好的方法是什么 我可以将
  • 我可以在 PureComponent 中使用 shouldComponentUpdate

    我知道的功能shouldComponentUpdate也PureComponent 但我想知道是否可以将两者一起使用 假设我有很多道具 我想让它们在其中进行浅比较处理PureComponent 除了 1 个道具 需要巧妙地进行比较 那么是否
  • Java - thread.sleep 的替代品

    我需要将 while 循环暂停特定的毫秒数 我尝试过使用 Thread sleep duration 但它不准确 特别是在循环场景中 毫秒精度在我的程序中很重要 这是我不想返回检查条件直到expectedElapsedTime已经过去了 w
  • 无法使用 a2wsgi 让 FastAPI 与 CPanel 配合使用

    似乎很多人都遇到了同样的问题 但到目前为止 它被证明是无法解决的 我希望有人能解决这个问题 我尝试在 cPanel 上运行 FastAPI 并不断收到错误 UID 1293 19858 Child process with pid 2008
  • iOS13 通过滑动(屏幕边缘)弹出视图控制器不起作用

    有正常的UINavigationController与一些堆叠UIViewController按下后 我无法使用 屏幕边缘 滑动手势返回根视图控制器 没有自定义导航栏 没有自定义后退按钮 与使用 后退 滑动手势相关的内容是否发生了变化 我知
  • 为什么这里的外部

    我这里有一个jsfiddle https jsfiddle net Lh7qbye2 7 https jsfiddle net Lh7qbye2 7 这里还有一个测试网页 https shetline com test test01 htm
  • Rx 中立即去抖

    我正在寻找一位运营商debounce一系列的事件 比如说用户的点击 输入和输出应该是这样的 interval gt lt gt lt in 1 2 3 4 5 5 6 7 8 out 1 4 这个想法就像下划线的反跳immediate op
  • 为什么可执行文件无法接收 Makefile 中导出的变量?

    我有一个 makefile 其中导出将由可执行文件接收的变量 但令人惊讶的是可执行文件没有接收导出的值 请帮我 31 test 32 echo 33 echo Testing Electric Fence 34 echo After the
  • 套接字在进程后打开,打开完成

    在服务器端关闭客户端套接字并退出应用程序后 套接字仍会打开一段时间 我可以通过netstat看到它 Every 0 1s netstat tuplna grep 6676 tcp 0 0 127 0 0 1 6676 127 0 0 1 3
  • IIS HTTP 错误 403.1 - 禁止:执行访问被拒绝

    我有一个在 IIS 6 Windows Server 2003 上运行的 ASP NET 1 1 应用程序 这是我们的应用程序 但我们正在尝试专门复制客户的安装 以便将应用程序文件夹从他们的生产服务器完全复制到我们的测试计算机上 然后我们手
  • 查找在线/离线会员总数 Discord.js

    您好 我正在执行服务器状态命令 但我不知道如何查找总成员数在线 离线所以如果有人能帮助我那就太好了 client on message message gt if message author bot return false if mes
  • Django:在现有的 html 页面上返回 StreamingHttpResponse

    由于每个问题最好有一个问题 因此如果与问题的其他部分相似 请耐心等待另一个我的问题 https stackoverflow com questions 29921085 django passing value from form to v