8

私は大きなGUIアプリの開発者であり、バグ追跡用のWebサイトがあります。誰でも新しいバグをバグ追跡サイトに送信できます。デスクトップアプリから特定の障害(つまり、未処理の例外)を検出できます。そのような場合は、ユーザーが事前定義したブラウザーでsubmit-new-bugフォームを開き、障害について収集できる情報をいくつかのフォームフィールドに追加します。 。GETまたはPOSThttpメソッドを使用してsubmit-new-bugフォームを取得し、そのフォームにデフォルトのフィールド値を提供できます。したがって、httpサーバー側からはすべてがほぼ問題ありません。

これまでのところ、Python標準ライブラリwebbrowserモジュールを使用して、URLのGETパラメータとしてデフォルト値を渡すURLを正常に開くことができます。ただし、一部のブラウザ(特にMS IE )で許可されるURLの最大長など、この方法にはいくつかの制限があります。モジュールには、POSTを使用してURLを要求する方法がないようです。OTOH必要なタイプのコントロールを提供するモジュールがありますが、AFAIKには、ユーザーが希望するブラウザーで取得したページを開く可能性がありません。webbrowserurllib2

私たちが望むこの混合動作を取得する方法はありますか(urllib2のより高いレベルの機能で細かく制御するためwebbrowser)?

PS:URLをで取得しurllib2、そのコンテンツを一時ファイルに保存し、そのファイルをで開く可能性について考えましたwebbrowser。これは少し厄介な解決策であり、この場合、相対URLなどの他の問題に対処する必要があります。より良い解決策はありますか?

4

3 に答える 3

6

結果をファイルに保存して開かずに、Web ブラウザーで POST 要求の結果を開く方法を知りません。

別のアプローチを取り、データをサーバーに一時的に保存するのはどうですか。次に、単純な id パラメータを使用してブラウザでページを開くと、部分的に入力されたフォームが表示されます。

于 2011-12-26T16:36:20.967 に答える
2

使用できますtempfile.NamedTemporaryFile()

import tempfile
import webbrowser
import jinja2

t = jinja2.Template('hello {{ name }}!') # you could load template from a file
f = tempfile.NamedTemporaryFile() # deleted when goes out of scope (closed)
f.write(t.render(name='abc'))
f.flush()
webbrowser.open_new_tab(f.name) # returns immediately 

サーバーを簡単に変更できる場合のより良いアプローチは、 @Acorn が提案するように、POST使用して部分パラメーターを使用してリクエストをurllib2作成し、サーバーによって生成された URL を開くことです。webbrowser

于 2011-12-26T17:04:04.267 に答える