首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Django模板中间添加StreamingHttpResponse

在Django模板中间添加StreamingHttpResponse
EN

Stack Overflow用户
提问于 2018-04-03 12:23:14
回答 1查看 799关注 0票数 3

Python 3.6.3,Django 2.0.3

我是django的新手,但我正在尝试创建一个非常简单的站点,在这个站点上,用户可以触发一些任务,这些任务以前只是混合的、独立的python脚本。不幸的是,这些任务可能需要相当长的时间。我希望能够在下面的模板中间( {{ stream }}所在的位置)显示这些任务的输出,这样用户就可以得到一些有意义的反馈。

代码语言:javascript
复制
{% load pagePieces %}

{% page_header %}

<div class="container">

    <div class="row">
        <a class="btn" href="/"><i class="fa fa-chevron-left"></i> Home</a>
    </div>

    <div class="row row-header"><h1>{{ operation }}</h1></div>

    <div class="row row-content">
        {{ stream }}
    </div>
</div>

{% page_footer %}

在我的视图文件中,我尝试了一些不同的东西,但这里是我现在所处的位置(这有点简化。我删除了一些错误处理,并更改了一些名称):

代码语言:javascript
复制
def myaction(request):
    output_template = loader.get_template('myapp/process_output.html')
    return StreamingHttpResponse(
        output_template.render({
            'operation': 'That long running task', 
            "stream": streaming_wrapper()
        })
    )

def streaming_wrapper():
    output_template = loader.get_template('myapp/process_output.html')
    x = yield from a_module.long_running_task()
    yield output_template.render({
        'operation': 'That long running task', 
        "stream": x
    })

这会流式传输来自long_running_task()的输出,但直到完成后才会加载模板的其余部分。在其他地方,我让输出流到模板之后,但不是在中间,这看起来很糟糕,因为我的模板有页眉和页脚。

我不确定如何让它工作,我也不确定答案是在我的视图中还是在我的模板中做一些更复杂的事情。

(我也意识到这与这两个问题类似,但它们都没有令人满意的答案,而且都很老了。

Django: return a StreamingHttpResponse on an existing html page

Django StreamingHttpResponse into a Template)

EN

回答 1

Stack Overflow用户

发布于 2021-05-24 03:28:10

尝试按照Miguel Grinberg - https://blog.miguelgrinberg.com/post/video-streaming-with-flask/page/8的这篇博客(这是针对Flask的)来实现这些步骤。但是您必须遵循相同的步骤,并且还需要根据需要修改模板。这些步骤对我很有效。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49622226

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档