gpt4 book ai didi

Django StreamingHttpResponse 到模板中

转载 作者:行者123 更新时间:2023-12-05 01:03:12 27 4
gpt4 key购买 nike

Django 1.5 刚刚发布,它提供了 StreamingHttpResponse。现在,我已阅读 this discussion第二个答案实际上是在页面中打印出流(实际上只是数据)。

我想要做的是将流响应的输出打印到模板中,而不仅仅是打印 the discussion 中的数据.

我该怎么办?我是否必须使用 javascript 并调用实现 StreamingHttpResponse 的 View ,或者有一种方法告诉 django 呈现模板,然后将 StreamingHttpResponse 数据发送到模板(然后我需要知道存储数据的变量是什么) ?

编辑:到目前为止我找到的解决方案是将最终 html 页面的片段写入生成器(yield)。这个解决方案的问题是,例如,我不能拥有一个随着数据流而增长的栏(如加载栏)。

淅淅

最佳答案

是的,但它可能不是您真正想要的,因为整个模板将被迭代。但是,您可以为模板流式传输重新渲染的上下文。

from django.http import StreamingHttpResponse
from django.template import Context, Template

# Template code parsed once upon creation, so
# create in module scope for better performance

t = Template('{{ mydata }} <br />\n')

def gen_rendered():
for x in range(1,11):
c = Context({'mydata': x})
yield t.render(c)

def stream_view(request):
response = StreamingHttpResponse(gen_rendered())
return response

编辑:你也可以渲染一个模板,然后添加 <p><tr>标记它,但它首先与模板的目的完全相反。 (即将表示与代码分离)

from django.template import loader, Context
from django.http import StreamingHttpResponse

t = loader.get_template('admin/base_site.html') # or whatever
buffer = ' ' * 1024

def gen_rendered():
yield t.render(Context({'varname': 'some value', 'buffer': buffer}))
# ^^^^^^
# embed that {{ buffer }} somewhere in your template
# (unless it's already long enough) to force display

for x in range(1,11):
yield '<p>x = {}</p>{}\n'.format(x, buffer)

关于Django StreamingHttpResponse 到模板中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15116881/

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