2011-07-18 15 views
0

私はcgiからweb.pyにアプリケーションを移行しています。結果を得て、cgiの簡単なprint文で動的に出力します。その結果、ページの読み込みが完了する前に結果が印刷されます。 web.pyでは、私はreturn文を持っており、どのように同じことを達成できるのか分かりません。web.pyの動的印刷

サンプル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

どちらかあなたがに追加し、最終的に返す文字列を使用します。いくつかの落とし穴がありますhttp://webpy.org/cookbook/streaming_large_files で説明し、あなたには、いくつかのヘッダーを設定する必要があり、あなたができない、

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

またはデータを生成する能力をreturnyieldをジェネレーターにしてください。

ヘッダーを設定した部分は、yield "Some more data"となります。これは、CGIスクリプトのprintと似ています。

+0

ありがとうございました!!!!まさに私が探していたもの! – StuckAgain

1

printを連結して単一のリターンに置き換えることによって移植を容易にすることはできますが、テンプレートエンジン(web.pyには組み込みのテンプレートエンジンTempletorがあります)の使用を検討してください。

ロジックをプレゼンテーションから分離することで、もう一方のプレゼンテーションをより簡単に考えることなく、その1つを変更することができます。