Динамическая печать в web.py - PullRequest
0 голосов
/ 18 июля 2011

Я перевожу приложение с cgi на web.py. Я получаю результаты и распечатываю их динамически с помощью простого оператора print в cgi. Таким образом, результаты были напечатаны до завершения загрузки страницы. В web.py у меня есть оператор return и я не могу понять, как мне этого добиться.

Пример кода cgi:

print "<p><b>Displaying Search Results</b></p>"
print "<table>"
cmd = subprocess.Popen(["find", location ,"-name", fileName], stdout=subprocess.PIPE)
for line in cmd.stdout:
    tableData=line.rstrip("\n")
    tableRow="<tr><td>tableData</td></tr>"
    print tableRow
print "</table>"

Приведенный выше код будет печатать строку за один раз, когда она генерируется. Как мне написать то же самое для web.py???

Ответы [ 2 ]

2 голосов
/ 18 июля 2011

Либо используйте строку, к которой вы добавляете и, наконец, возвращаете:

s = "My page with..."
s += "More data"
for y in x:
    s += "And this!"
return s

Или возможность получить данные, описанные в http://webpy.org/cookbook/streaming_large_files Есть некоторые ошибки, вам нужно установить несколько заголовкови вы не можете смешивать return и yield, так как вы делаете его генератором.

При настройке заголовков вы будете использовать: yield "Some more data", аналогично print в вашем CGI-скрипте.

1 голос
/ 20 июля 2011

Даже если вы можете упростить перенос, заменив print s на конкатенацию и однократный возврат, рассмотрите возможность использования механизма шаблонов (в web.py есть встроенный механизм шаблонов с именем Templetor ).

Отделение логики от презентации позволяет вам изменить один из них, не думая о другом легче.

...