是的,但它可能不是你真正想要的,因爲整個模板會被重複。但是,對於它的價值,您可以爲模板傳輸重新呈現的上下文。
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的Google網上論壇主題[https://groups.google.com/d/msg/django-users/eQ2SVB_uYuE/IayaI0YlPngJ]和回覆中,我不想做的事情通過這種方式。 感謝您的幫助 – EsseTi 2013-03-13 12:13:42
我不確定_shouldn't_。如果您有一個小型項目,您可以控制演示文稿和邏輯,這似乎可以接受。我回答是因爲我正在實施它。請注意,即使關閉瀏覽器頁面,邏輯(我的是批量添加)仍會繼續運行。 – Frank 2013-03-13 18:18:02