0

以下のこの変数は、処理を変数名procに格納します。

proc = subprocess.Popen(['sshpass', '-p', password, 'rsync', '-avz', '--info=progress2', source12, destination], 
                                    stderr=subprocess.PIPE, stdout=subprocess.PIPE).communicate()[0]

私は Django テンプレートのフォームです。ユーザーが送信ボタンを押すたびに、変数 proc を使用して処理を表示したいと考えています。次のように、Django テンプレート Javascript で変数 proc を使用してみました。

function popUp() {
    var a = "{{proc}}"
    document.write(a)
}
</script>

しかし、空のページしか表示されません。私は変数をhtml bodyタグ内で直接呼び出すことをテストしましたが、それは正常に動作しますが、javascriptでは動作しません。私が間違っていることは何ですか?

次のように、Django テンプレートで次のようにpopUp関数を呼び出しています。

<form name="form1" action="/sync/" method="post" onsubmit="popUp()">

そして、次のように Django テンプレートで変数procを渡しています。

return render_to_response('synced.html', {'final_result':final_list}, context_instance=RequestContext(request))
return render_to_response('thanks.html', {'proc':proc}, context_instance=RequestContext(request))

編集: チェックのために、変数をthanks.htmlに渡す代わりに、変数procsynced.htmlに渡し、次のようにテンプレートで使用しました:

<th>Files in the server:</th>
</tr>
<td>{{ proc }}</td>
<tr>

私の出力は次のとおりです。

receiving incremental file list 0 0% 0.00kB/s 0:00:00 (xfr#0, to-chk=0/1) sent 20 bytes received 56 bytes 6.08 bytes/sec total size is 8,640 speedup is 113.68
4

1 に答える 1

0

あなたがしていることは間違っていないことをお勧めしますが、あなたのこのユースケースを解決するために設計されたより良い方法とテクノロジーがあります. あなたが試すことができるいくつかのこと -

  1. AJAX ポーリング - クライアント側のタイマーを使用して、サーバーのステータスを常にポーリングします。
  2. COMET - コメットは PUSH テクノロジーです。HTTP はプル テクノロジであるため、サーバーとクライアントの間に永続的な接続を確立し、サーバーに進行状況をプッシュさせることができます。

あなたが探していた答えではありませんが、これが役に立てば幸いです...

于 2012-12-12T03:52:12.723 に答える