简体   繁体   English

使用WAMP和HTML使用Python进行CGI编程

[英]CGI programming with Python using WAMP and HTML

I'm trying to connect an HTML file with python 我正在尝试使用python连接HTML文件

Here's my HTML code 这是我的HTML代码

<html>
<head>
</head>
<body>
<form method="POST" action="C:\wamp\www\cgi-bin\nidhi.py">
    <p>Your first name: <input type="text" name="firstname">
    <p>Your last name: <input type="text" name="lastname">
    <p>Click here to submit form: <input type="submit" value="Yeah!">
    <input type="hidden" name="session" value="1f9a2">
</form>
</body>
</html>

Here's the content of C:\\wamp\\www\\cgi-bin\\nidhi.py 这是C:\\ wamp \\ www \\ cgi-bin \\ nidhi.py的内容

#!/usr/local/bin/python
import cgi

def main():
    print "Content-type: text/html\n"
    form = cgi.FieldStorage()   # parse query
    if form.has_key("firstname") and form["firstname"].value != "":
        print "<h1>Hello", form["firstname"].value, "</h1>"
    else:
        print "<h1>Error! Please enter first name.</h1>"

if __name__ == '__main__':
    main()

So yes I am running this using WAMP as my server. 所以是的,我使用WAMP作为我的服务器来运行它。

So when I open my HTML file I can see the form but when i press the button all it does is shows me the python code. 因此,当我打开我的HTML文件时,我可以看到表单,但是当我按下按钮时,它所做的就是向我显示python代码。

What am I doing wrong? 我究竟做错了什么?

Here's the httpd.conf file in C:\\wamp\\bin\\apache\\apache2.2.22\\conf 这是C:\\ wamp \\ bin \\ apache \\ apache2.2.22 \\ conf中的httpd.conf文件

ServerRoot "c:/wamp/bin/apache/apache2.2.22"
Listen 80
LoadModule actions_module modules/mod_actions.so
LoadModule alias_module modules/mod_alias.so
LoadModule asis_module modules/mod_asis.so
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule authn_default_module modules/mod_authn_default.so
LoadModule authn_file_module modules/mod_authn_file.so
LoadModule authz_default_module modules/mod_authz_default.so
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule authz_user_module modules/mod_authz_user.so
LoadModule autoindex_module modules/mod_autoindex.so
LoadModule cgi_module modules/mod_cgi.so
LoadModule dir_module modules/mod_dir.so
LoadModule env_module modules/mod_env.so
LoadModule include_module modules/mod_include.so
LoadModule isapi_module modules/mod_isapi.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule mime_module modules/mod_mime.so
LoadModule negotiation_module modules/mod_negotiation.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule php5_module "c:/wamp/bin/php/php5.3.13/php5apache2_2.dll"

<IfModule !mpm_netware_module>
<IfModule !mpm_winnt_module>
User daemon
Group daemon

</IfModule>
</IfModule>
ServerAdmin admin@localhost

ServerName localhost:80

DocumentRoot "c:/wamp/www/"

<Directory />
    Options FollowSymLinks ExecCGI
    AllowOverride None
    Order deny,allow
    Deny from all
</Directory>
<Directory "c:/wamp/www/">
    Options Indexes FollowSymLinks 
    AllowOverride None
    Order Deny,Allow
    Deny from all
    Allow from 127.0.0.1
</Directory>
<IfModule dir_module>
    DirectoryIndex index.php index.php3 index.html index.htm
</IfModule>
<FilesMatch "^\.ht">
    Order allow,deny
    Deny from all
    Satisfy All
</FilesMatch>
ErrorLog "c:/wamp/logs/apache_error.log"
LogLevel warn

<IfModule log_config_module>
    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
    LogFormat "%h %l %u %t \"%r\" %>s %b" common

    <IfModule logio_module>
      LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
    </IfModule>
    CustomLog "c:/wamp/logs/access.log" common
</IfModule>

<IfModule alias_module>
</IfModule>

<IfModule cgid_module>

</IfModule>

<Directory "C:/wamp/www/cgi-bin">
    AllowOverride None
    Options ExecCGI
    Order allow,deny
    Allow from all
</Directory>
DefaultType text/plain

<IfModule mime_module>

    TypesConfig conf/mime.types
    AddType application/x-compress .Z
    AddType application/x-gzip .gz .tgz
    AddType application/x-httpd-php .php
    AddType application/x-httpd-php .php3

    AddHandler cgi-script .cgi .pl .py
</IfModule>
Include conf/extra/httpd-autoindex.conf


<IfModule ssl_module>
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
</IfModule>

Include "c:/wamp/alias/*"

Could someone please tell me what I'm doing wrong? 有人可以告诉我我做错了什么吗? I'm losing my mind! 我在失去理智!

Also the top line of the python scripts needs to point to your interpreter like this. 另外python脚本的顶行需要像这样指向你的解释器。

#!C:\Python27\python.exe -u

Im not sure what the -u is for though I got the info from this page. 我不知道-u是什么,虽然我从这个页面得到了信息。

http://wiki.python.org/moin/CgiScripts http://wiki.python.org/moin/CgiScripts

#!C:\Python27\python.exe -u

import cgi

print 'Content-Type: text/plain\n\n' #this line is compulsory to separate body from header in http response

The main problem I see is that you have NOT configured Python scripts to be processed by your IIS Server. 我看到的主要问题是您没有配置要由IIS服务器处理的Python脚本。

Because the Python Module is NOT enabled, Apache does NOT understand your Python code and simply outputs the fully code as it is. 由于未启用Python模块,因此Apache不会理解您的Python代码,只是输出完整的代码。

Please use MOD_WSGI (not MOD_PYTHON) in your WAMP Server. 请在您的WAMP服务器中使用MOD_WSGI(不是MOD_PYTHON)。 You can learn more here: https://code.google.com/p/modwsgi/ 您可以在此处了解详情: https//code.google.com/p/modwsgi/

And, this should help you to quickly set it up: https://code.google.com/p/modwsgi/wiki/QuickConfigurationGuide 而且,这可以帮助您快速设置它: https//code.google.com/p/modwsgi/wiki/QuickConfigurationGuide

Refer this: Installing mod_wsgi on WAMP server running on Windows 7 请参阅: 在Windows 7上运行的WAMP服务器上安装mod_wsgi

Try changing this line: 尝试更改此行:

<form method="POST" action="C:\wamp\www\cgi-bin\nidhi.py">

To this: 对此:

<form method="POST" action="/cgi-bin/nidhi.py">

You want the action to be a URL, which will be handled through your server, rather than an absolute path to a local file that your browser knows how to get without your server. 您希望该操作是一个URL,它将通过您的服务器处理,而不是您的浏览器知道如何在没有您的服务器的情况下获取的本地文件的绝对路径。

我还想知道你的标题行Content-type:text / html \\ n需要更改为Content-type:text / html \\ r \\ n这是做换行符的windows方法。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM