小编ash*_*a99的帖子

将 StreamingHttpResponse 添加到 Django 模板的中间

Python 3.6.3、Django 2.0.3

我是 django 的新手,但我正在尝试创建一个非常简单的网站,人们可以在其中触发一些以前只是杂项、独立 python 脚本的任务。不幸的是,这些任务可能需要相当长的时间。我希望能够在以下模板的中间(其中是{{ stream }})显示这些任务的输出,以便用户获得一些有意义的反馈。

{% 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 %}
Run Code Online (Sandbox Code Playgroud)

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

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 …
Run Code Online (Sandbox Code Playgroud)

python django django-templates django-views

5
推荐指数
1
解决办法
1397
查看次数

标签 统计

django ×1

django-templates ×1

django-views ×1

python ×1