0

Python cgi および webbrowser モジュールを使用して、html フォーム送信アクションから URL を開こうとしています。localhost で URL を起動できますが python -m webbrowser -t "http://myhost.com/path/to/some/file.html"webbrowser.open(url, new=0, autoraise=True)私の cgi スクリプトでは、apache は空白のページを提供し、ページにエラーは出力されません。Firefox ブラウザーのロケーション ボックスに、宛先 URL の代わりに「 http://myhost.com/my_script.cgi?Submit=Submit 」と表示されます。

このコンテキストで webbrowser モジュールを使用できない場合、実際にどのような目的で使用されるのか混乱します。フォーム アクションとして URL を使用すると、ページはクライアントに提供されますが、スクリプトは、URL を特定してからその URL をクライアントに提供するために、以前の HTML フォームから渡された変数を処理する必要があります。不足しているものを教えてください、ありがとう。

4

1 に答える 1

0

はい、あなたはウェブブラウザライブラリが何をすべきかを混乱させていると確信しています。cgi 内で webbrowser コマンドを実行すると、cgi スクリプトを実行しているサーバー上で webbrowser を開こうとします (cgi を実行しているユーザーと同じように)。これはおそらく機能しません。あなたが望んでいると思うのは、cgiスクリプトが適切なHTTP「コマンド」をブラウザーに返してリダイレクトさせることです。例として:

if "Submit" in form:
   url = "http://www.python.org #or do whatever processing is needed to calculate the new URL
   print "Status: 302" #this tells the browser the result is a redirect
   print "Location: " + url #this tells the browser where to redirect
   print "" #send two new lines to end the HTTP header

django や別のライブラリを使用している場合 (cgi ライブラリだけでも問題ないと思います)、おそらくこれを行うためのより高いレベルの方法がありますが、これはほぼどこでも機能するはずです。HTML 内などで META-refresh を使用することもできます。

于 2014-02-23T20:38:01.310 に答える