はい。ただし、テンプレート全体が繰り返されるため、実際には必要ない場合があります。ただし、その価値については、テンプレートの再レンダリングされたコンテキストをストリーミングできます。
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)