Python
 Computer >> コンピューター >  >> プログラミング >> Python

Python CGIプログラミングのGETとPOSTの違いは何ですか?


GETおよびPOSTメソッド

ブラウザからWebサーバーに、そして最終的にはCGIプログラムに情報を渡す必要がある場合、多くの状況に遭遇したに違いありません。ほとんどの場合、ブラウザは2つの方法を使用し、2つはこの情報をWebサーバーに渡します。これらのメソッドは、GETメソッドとPOSTメソッドです。

GETメソッドを使用した情報の受け渡し

GETメソッドは、ページリクエストに追加されたエンコードされたユーザー情報を送信します。ページとエンコードされた情報は?で区切られます次のような文字-

https://www.test.com/cgi-bin/hello.py?key1=value1&key2=value2

GETメソッドは、ブラウザからWebサーバーに情報を渡すためのデフォルトのメソッドであり、ブラウザのLocation:boxに表示される長い文字列を生成します。サーバーに渡すパスワードやその他の機密情報がある場合は、GETメソッドを使用しないでください。 GETメソッドにはサイズ制限があります。リクエスト文字列で送信できるのは1024文字のみです。 GETメソッドはQUERY_STRINGヘッダーを使用して情報を送信し、QUERY_STRING環境変数を介してCGIプログラムでアクセスできます。

キーと値のペアを任意のURLと連結するだけで情報を渡すか、HTMLの

タグを使用してGETメソッドを使用して情報を渡すことができます。

簡単なURLの例-Getメソッド これは単純なURLで、GETメソッドを使用してhello_get.pyプログラムに2つの値を渡します。

/cgi-bin/hello_get.py?first_name=ZARA&last_name=ALI

以下は、Webブラウザからの入力を処理するhello_get.pyスクリプトです。渡された情報に非常に簡単にアクセスできるcgiモジュールを使用します-

#!/usr/bin/python
# Import modules for CGI handling
import cgi, cgitb
# Create instance of FieldStorage
form = cgi.FieldStorage()
# Get data from fields
first_name = form.getvalue('first_name')
last_name  = form.getvalue('last_name')
print "Content-type:text/html\r\n\r\n"
print "<html>"
print "<head>"
print "<title>Hello - Second CGI Program</title>"
print "</head>"
print "<body>"
print "<h2>Hello %s %s</h2>" % (first_name, last_name)
print "</body>"
print "</html>"
これにより、次の結果が生成されます-

Hello ZARA ALI
簡単なFORMの例-GETメソッド

この例では、HTMLFORMと送信ボタンを使用して2つの値を渡します。この入力を処理するために、同じCGIスクリプトhello_get.pyを使用します。

<form action = "/cgi-bin/hello_get.py" method = "get">
First Name: <input type = "text" name = "first_name">  <br />
Last Name: <input type = "text" name = "last_name" />
<input type = "submit" value = "Submit" />
</form>

上記のフォームの実際の出力は次のとおりです。名前と名前を入力し、送信ボタンをクリックして結果を確認します。

First Name:
Last Name:
 Submit
POSTメソッドを使用した情報の受け渡し

CGIプログラムに情報を渡す一般的により信頼性の高い方法は、POSTメソッドです。これは、GETメソッドとまったく同じ方法で情報をパッケージ化しますが、?の後にテキスト文字列として送信する代わりにURLでは、別のメッセージとして送信します。このメッセージは、標準入力の形式でCGIスクリプトに送られます。

以下は、GETメソッドとPOSTメソッドを処理する同じhello_get.pyスクリプトです。

#!/usr/bin/python
# Import modules for CGI handling
import cgi, cgitb
# Create instance of FieldStorage
form = cgi.FieldStorage()
# Get data from fields
first_name = form.getvalue('first_name')
last_name  = form.getvalue('last_name')
print "Content-type:text/html\r\n\r\n"
print "<html>"
print "<head>"
print "<title>Hello - Second CGI Program</title>"
print "</head>"
print "<body>"
print "<h2>Hello %s %s</h2>" % (first_name, last_name)
print "</body>"
print "</html>"

HTMLFORMと送信ボタンを使用して2つの値を渡す上記と同じ例をもう一度見てみましょう。この入力を処理するために、同じCGIスクリプトhello_get.pyを使用します。

<form action = "/cgi-bin/hello_get.py" method = "post">
First Name: <input type = "text" name = "first_name"><br />
Last Name: <input type = "text" name = "last_name" />
<input type = "submit" value = "Submit" />
</form>
上記のフォームの実際の出力は次のとおりです。姓名を入力し、送信ボタンをクリックして結果を確認します。

First Name:
Last Name:
 Submit


  1. Tkinter(Python)のroot.destroy()とroot.quit()の違いは何ですか?

    destroy()を呼び出すとき tkinterウィンドウオブジェクトを使用するメソッドは、メインループを終了します ウィンドウ内のすべてのウィジェットを処理して破棄します。 Tkinter destroy() メソッドは主に、バックグラウンドで実行されているインタープリターを強制終了して終了するために使用されます。 ただし、 quit() mainloop()の後でプロセスを停止するために、メソッドを呼び出すことができます。 働き。ボタンオブジェクトを作成することで、両方のメソッドの機能を示すことができます。 例 #Import the required libraries from

  2. Pythonのtkinterとtkinter.ttkのウィジェットの違いは何ですか?

    tkinter.ttk tkinterウィジェットのスタイルを設定するために使用されるモジュールです。 CSSを使用してHTML要素のスタイルを設定するのと同じように、tkinter.ttkを使用してtkinterウィジェットのスタイルを設定します。 tkinterウィジェットとtkinter.ttkの主な違いは次のとおりです。 − Tkinterウィジェットは、ボタン、ラベル、テキスト、スクロールバーなどを追加するために使用されますが、tkinter.ttkは、tkinterウィジェットと比較してさまざまなウィジェットをサポートしています。 Tkinter.ttkはPlac