ホームページ > バックエンド開発 > Python チュートリアル > PythonCGI プログラミングのサンプル チュートリアルを共有する

PythonCGI プログラミングのサンプル チュートリアルを共有する

零下一度
リリース: 2017-05-19 13:08:41
オリジナル
2621 人が閲覧しました

私はここ 1 週間、オンラインで Python を学習し続け、Python での CGI プログラミングに触れてきました。 CGI の公式の定義は次のとおりです:

CGI (Common Gateway Interface) は、共通のゲートウェイ インターフェイスであり、 HTTP サーバーなどのサーバー上で実行され、クライアントの HTML ページとのインターフェイスを提供します。

私は Python CGI がどれほど強力なアプリケーションを作成できるかに興味があるため、Python のプログラミング部分を直接学習し始めました。まず、Wamp 統合開発がコンピューターに既にインストールされているように Web サーバーを構成する必要があります。 . 環境なので、Apache をインストールする必要はありません。Apache での設定方法については、Linux 環境で行う必要があるとのブログ記事がインターネット上にたくさんあります。大きく変わったので、私は自分の手直しの旅を始めました。 Windows を開発に使用することは実は落とし穴であることがわかりました。

オンライン学習 Web サイト Python CGI によると、まず CGI ディレクトリを設定し、Apache 設定ファイル内の httpd.conf

ScriptAlias /cgi-bin/ /var/www/cgi-bin/
ログイン後にコピー

を変更してから、次のように httpd.conf ファイルをmodifyする必要があります。

<Directory "/var/www/cgi-bin">
   AllowOverride None
   Options +ExecCGI
   Order allow,deny
   Allow from all</Directory>
ログイン後にコピー
次に、.py で終わる Python スクリプト ファイルにアクセスできるように、

AddHandler に .py サフィックスを追加します。

これをすべて行った後、サーバー (Apache/Wamp) を再起動し、最初の CGI を書き込みますプログラムのコードは次のとおりです:

test1.py

#!D:\Python27\python # -*- coding: UTF-8 -*-print "Content-type:text/html\r\n\r\n"print &#39;<html>&#39;print &#39;<head>&#39;print &#39;<title>Hello Word - First CGI Program</title>&#39;print &#39;</head>&#39;print &#39;<body>&#39;print &#39;<h2>Hello Word! This is my first CGI program</h2>&#39;print &#39;</body>&#39;print &#39;</html>&#39;
ログイン後にコピー
最初の行の内容は、スクリプトインタープリタの場所を指定します。これは、インストールしたパスに従って変更できます

次に、ブラウザのアドレス バーに「http ://localhost/cgi-bin/test1.py

」と入力します。すると、ブラウザにアクセスすると次の結果が表示されます:

Hello Word! This is my first CGI program
ログイン後にコピー
問題ありません

2番目のプログラム: hello_get.py

#!D:\Python27\python# -*- coding: UTF-8 -*-# CGI处理模块import cgi, cgitb 
# 创建 FieldStorage 的实例化form = cgi.FieldStorage() # 获取数据first_name = form.getvalue(&#39;first_name&#39;)last_name  = form.getvalue(&#39;last_name&#39;)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>"
ログイン後にコピー
ブラウザに localhost/cgi-bin/hello_get.py?first_name=ZARA&last_name=ALI と入力します

ただし、Web サイトのとおりに出力されません Hello ZARA ALI

次のエラーメッセージが表示されました

それで、私は、Baidu Apache CGI の設定方法が同じであったので、混乱しました。これらはすべて Linux での設定方法なので、他に方法はありません。その後、上記の各手順を再度実行し、コードをコピーしました。ウェブサイトを
エディターに

次に、ブラウザにもう一度入力しました:

http://localhost/cgi-bin/hello_get.py?first_name=ZARA&last_name=ALI
ログイン後にコピー
結果は依然として上記のエラーメッセージの文字列だったので、プロンプトを詳しく調べました。これは、大まかに次のことを意味します:

内部サーバーエラー

サーバーで内部エラーが発生したか、構成ミスによりリクエストを完了できませんでした

電子メールでサーバー管理者に連絡し、このエラーとこのエラーが発生する前に行ったことを知らせてください

知りたいもっと見る サーバーエラーログを確認してください

そのため、サーバーの設定が間違っているからだと思い込んでいたのですが、設定ファイルを何も変更していないときに、ふと思いつきました。以前は、最初のプログラム test1 は正常に実行できましたが、このエラーは構成ファイルとは関係がないので、test1 の最初の行でインタープリタのパスを宣言するステートメントを削除して、再度実行してみました。


これは私の推測を裏付けるもので、私のスクリプトファイルがこの場合、hello_get.py のエラーも同じであるため、問題はコードにエラーがあるかどうかを確認するだけです。

ここで、私の悪い習慣について考えてみたいと思います。ウェブサイトでルーチンを実行しようとするとき、私はいつも Ctrl C を押してから Ctrl V を押して、コピーしてエディターに貼り付けます。もっと簡単なプログラムです。多くのコード ブロックを含むより複雑なプログラムの場合、この習慣の影響で、インデント形式が正しくなくなり、実行エラーが発生します。これは、Python には厳密なインデント要件があるためです。は非常に厳密であるため、Python プログラムをコピーして自分のプログラムに貼り付けることはできません。インデントを制御できるようにコードを 1 つずつ入力する必要があります。

私がこれを言うと、人々は私のhello_get.pyファイルのエラーをすでに目にしています。実際、私はそれを以前にオンラインでコピーしようとしただけです。 C 言語のコードは VC++6.0 に入れられています。一見、構文は完全に正しいように見えますが、常に以下のエラーが発生し、プロンプトが理解できないため、この状況に遭遇した場合は、これかもしれないと思います。理由。また、コードは自分でプログラムに 1 文字ずつ入力する必要があることも警告しています。そうしないと、検出が難しいエラーが発生します。

最後に、CGI スクリプトを正しく実行するために Windows で wamp (Apache) を正しく設定する方法について説明します。手順は非常に簡単です:

httpd.conf を開きます

の371行目を変更

ScriptAlias /cgi-bin/ "D:/wamp/bin/apache/apache2.4.9/cgi-bin/"前面的#号去掉,就是解除注释,将后面引号里的D:/wamp/bin/apache/apache2.4.9/cgi-bin/改成自己的cgi-bin所在的路径
ログイン後にコピー

将387行引号里的内容也改成自己的cgi-bin所在的路径

保存之后重启服务器即可

【相关推荐】

1. 详解cgi向文本或者数据库写入数据实例代码

2. 分享在IIS上用CGI方式运行Python脚本的实例教程

3. 使用CGI模块建立简单web页面教程实例

4. 什么是CGI?详细介绍Python CGI编程

5. 详解XML与现代CGI应用程序的示例代码

6. FastCGI 进程意外退出造成500错误

以上がPythonCGI プログラミングのサンプル チュートリアルを共有するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート