I am developing a website using django
. The website has a page which takes more than 1 seconds to be rendered. I want to load this page progressively like Google. Google first loads the input then after some moments loads search results. like this:
I use StreamingHttpResponse
(described here) to load page progressively. My views.py
is here:
import time
from django.http.response import StreamingHttpResponse
class TestStreamingLoading(View):
def get(self, request):
response = StreamingHttpResponse(streaming_content=self.generate_stream_response())
return response
def generate_stream_response(self):
yield 'data1 '
time.sleep(4)
yield 'data2'
My problem is the browser does not render anything till total page is downloaded. The browser shows nothing before 4 seconds and after that shows data1 data2
. But I want to show data1
at the beginning and show data1 data2
after 4 seconds. How can I do this?