2

フォームを含む html ページがあり、ユーザーがフォームにデータを入力できるようにしたいと考えています。次に、Python スクリプトを使用してこのデータを取得します。

HTMLとPythonを通信させる方法がわかりません。ユーザーが投稿をクリックした後、python はどのようにフォームを取得できますか? これを実証するために使用できる基本的な例はありますか?

4

2 に答える 2

2

必要なのは HTTP サーバーです。Python を使用してサーバーを作成することも、Apache や Lighttpd などのサーバーを入手することもできます。少し前に、これに基づいてサンプル アプリケーション (じゃんけん) を作成しました: https://dl.dropboxusercontent.com/u/95437705/RPS_Web.tgz

于 2012-07-09T22:44:01.853 に答える
1

C0deH4cker の言うとおり、Python プログラムを何らかの Web サーバーのどこかで実行する必要があります。

大規模なプロジェクトでこれを行う適切な方法は、Django や Web2py などの Web フレームワークを使用することです。これらのフレームワークには、利用する価値のある優れたドキュメントとチュートリアル ページがあります。小さな利点は、小規模な展開を開発するための独自の組み込み Web サーバーが両方にあることです。

もう 1 つの方法は、独自の Web サーバーを持つ Python コードを作成することです。Python のネットワーク フレームワークである Twisted をご覧ください。良い情報はhttp://twistedmatrix.com/documents/current/web/howto/web-in-60/index.htmlにあります。

最後に-しかし、これは少し時代遅れだと思われます(??)-あなたが説明するCGIオプションがあります。apache や lighttpd などのほとんどの Web サーバーには、CGI スクリプトを実行するオプションがあります。CGI スクリプトは非常に単純なプログラムであり、最も単純な形式で実行すると、標準出力に HTML コードを出力します。Web サーバーは、スクリプトの最初の ("shebang") 行を調べてスクリプト インタープリターを特定し、スクリプトを実行して、出力を取得し、HTTP 経由で提供します。

CGI では、パラメーターの受け渡しのために特定の規定が作成されています。Python CGI モジュールでは、これらは cgi.FieldStorage() を通じて取得できます。

最初にいくつかの HTML について:

HTML フォームには「action」属性と「method」属性があります。アクションは、フォーム データの送信先の URL (絶対パス、または現在のパスからの相対パス) です。Method は使用するメソッドです。通常、送信ボタンのあるフォームの場合、これは "POST" です。

したがって、この HTML コードをどこかで実行している場合:

<html>
<body>
  <form name="sample" action="cgi-bin/myscript.cgi" method="post">
    Name: <input type="text" name="name"/>
    <input type="submit" value="Submit"/>
  </form>
</body>
</html>

ユーザーが送信ボタンを押すと、すべての入力値が URL "myprogram.cgi" に送信されます。

CGI コードがどのように見えるべきかについての適切なテキストはhttp://docs.python.org/library/cgi.htmlにあります。

動作するはずのコードは次のとおりです。

import cgi

print "Content-Type: text/html"     # HTML is following
print                               # blank line, end of headers

print "<TITLE>CGI script output</TITLE>"
print "<body>\n"
print "<H1>This is my first CGI script</H1>"
print "Hello, world!"

form = cgi.FieldStorage()
if "name" not in form: 
    print "<H1>Error</H1>"
    print "Please fill in the name fields"
else:
    print "<p>name:", form["name"].value
print "</body>"

ここで、Web サーバーから指定された URL でこのコードを使用できるようにする必要があることを認識しておくことが重要です。これを行う方法は、Web サーバーによって異なります。

Linux の apache では、通常、スクリプトを /var/www/cgi-bin に配置します。セキュリティ上の理由でオフになっている可能性があるため、apache 構成で cgi の実行を有効にする必要があります。

于 2012-07-09T23:34:37.763 に答える