Render / Load контекст один за другим, когда он готов в Django [duplicate]

Без переопределения ToString, если вы попытались «получить» строковое значение Employee, например

var employee1= new Employee(); Console.WriteLine(employee1);

Что вы получите:

ConsoleApplication1.Program + Employee

, который не предоставляет никакой информации, чтобы помочь вам (или пользовательскому интерфейсу) отображать релевантную информацию.

Я использую return _name + _number + _date + _salary;. По умолчанию используется строка,

или более подробный

return "Name:" + _name + " Number:" + _number + " etc...";

4
задан rslite 26 October 2009 в 11:46
поделиться

4 ответа

6
ответ дан Community 30 October 2018 в 22:07
поделиться

Вам нужно будет использовать какой-то процесс очередности, если вы хотите запустить задачу при визуализации представления, иначе процесс завершится первым, прежде чем что-либо вернется в браузер.

задача выполняется асинхронно, вы можете использовать AJAX для обновления страницы с последним статусом или просто использовать метаобновление внутри страницы для загрузки нового содержимого.

Здесь есть сервер очереди Django, который вы можете использовать:

http://code.google.com/p/django-queue-service/

Казалось бы, этот вопрос также был задан несколько раз до:

2
ответ дан Community 19 August 2018 в 09:46
поделиться
  • 1
    Я не уверен, что это относится к веб-приложению Django, представления полностью выводят их вывод, прежде чем он будет передан обратно в браузер. – Andre Miller 26 October 2009 в 12:26
  • 2
    Это «правильный» метод, но для этого требуется время, и на данный момент мне просто нужно быстрое n-грязное решение. Оказывается, одна из ссылок, которые вы предоставили, содержит ответ, который мне нужен. – rslite 26 October 2009 в 13:31
  • 3
    Использование Iterator с HttpResponse накладывает некоторые ограничения на способ создания ответа, см. docs.djangoproject.com/en/dev/ref/request-response/… Также обратите внимание, что любое промежуточное программное обеспечение, используемое должен поддерживать этот тип поведения. – Remco Wendt 1 February 2012 в 16:41

Мы находимся в 201X

Да, вы должны использовать WebSockets или Ajax-вызовы !!

Поскольку вы просили (для целей записи) какое-то потоковое решение в Django, вы можете используйте StreamingHttpResponse, который Django поддерживает из коробки.

https://docs.djangoproject.com/en/dev/ref/request-response/#django.http.StreamingHttpResponse

Класс StreamingHttpResponse используется для потоковой передачи ответа от Django на браузер. Вы можете сделать это, если генерация ответа занимает слишком много времени или использует слишком много памяти. Например, он полезен для создания больших файлов CSV.

0
ответ дан naren 19 August 2018 в 09:46
поделиться

Прежде всего, убедитесь, что вы выведете заголовок Connection: Keep-Alive, после чего вам нужно только убедиться, что вывод сценария не буферизирован. В Python вы можете использовать функцию cgiprint модуля cgi модуля, чтобы убедиться, что буфер Python очищен, но вы также должны проверить конфигурацию веб-сервера, так как некоторые будут буферизовать весь вывод до завершения работы скрипта.

-2
ответ дан pavpanchekha 19 August 2018 в 09:46
поделиться
  • 1
    Он использует Django, а не cgi-скрипты – Andre Miller 26 October 2009 в 12:49
  • 2
    Кроме того: использование Keep-Alive влияет только на выполнение нескольких запросов / ответов по одному и тому же TCP-соединению для экономии затрат времени на одностороннее соединение TCP-соединения. Это не влияет на отправку непрерывного вывода в пределах одного и того же HTTP-ответа. – Remco Wendt 1 February 2012 в 16:39
Другие вопросы по тегам:

Похожие вопросы: