Поскольку лучше иметь один вопрос для каждой проблемы, наберитесь терпения, если он похож на другую часть другой мой вопрос, относящийся к тому же проекту.
Ситуация:
У меня есть форма на html, в которой я могу установить число, и когда оно отправляется, это вызов views.stream_response
, который передает значение в stream.py и возвращает StreamingHttpResponse и появляется «виртуальная» пустая страница браузера (/stream_response/), на которой я могу видеть прогрессивное число каждую секунду до m
:
1
2
3
..
m
stream.py
import time
def streamx(m):
lista = []
x=0
while len(lista) < m:
x = x + 1
time.sleep(1)
lista.append(x)
yield "<div>%s</div>\n" % x
print(lista[-1])
return (x)
---ОБНОВЛЕНИЕ---
views.py
def stream_response(request):
test = InputNumeroForm()
if request.method == 'POST':
test = InputNumeroForm(data=request.POST)
if test.is_valid():
m = test.cleaned_data['numero']
print (test)
print("m = ", m)
#resp = StreamingHttpResponse(stream_response_generator(m))
resp = StreamingHttpResponse(stream.streamx(m))
return resp
return render(request, 'homepage/provadata.html',{'user.username': request, 'test': test}, context_instance = RequestContext(request))
urls.py
...
url(r'^homepage/provadata/$', views.provadata),
url(r'^stream_response/$', views.stream_response, name='stream_response'),
...
домашняя страница/provadata.html
<form id="numero" action="/stream_response_bis/" method="POST">
{% csrf_token %}
{{test}}
<input type="submit" value="to view" />
</form>
//{{ris}}
Я попытался выполнить ответ render_to, чтобы остаться на homepage/provadata.html и просмотреть прогрессивные списки, но stream.py не запускается, и я вижу только введенный номер m в командной строке.
Я попытался использовать ЭТО предложение в views.py
def stream_response_generator(m):
ris = stream.streamx(m)
yield loader.get_template('homepage/provadata.html').render(Context({'ris': ris}))
(добавляя {{ris}}
в шаблон иresp = StreamingHttpResponse(stream_response_generator(m))
в функцию stream_response), но я получаю на шаблоне:
<generator object streamx at 0x0000000004BEB870>
И в командной строке он печатает входное значение, но больше не передает параметр в stream.py.
Итак... Как я могу решить эту проблему?