我正在尝试使用python连接HTML文件
这是我的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>
以下是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()
所以是的,我正在使用WAMP作为我的服务器来运行它。
因此,当我打开我的HTML文件时,我可以看到表单,但是当我按下按钮时,它只显示python代码。
我做错了什么?
这是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/*"
有人可以告诉我我做错了什么吗?我在失去理智!
答案 0 :(得分:1)
此外,python脚本的顶行需要像这样指向你的解释器。
#!C:\Python27\python.exe -u
我不知道-u是什么,虽然我从这个页面得到了信息。
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
答案 1 :(得分:1)
我看到的主要问题是您没有配置要由IIS服务器处理的Python脚本。
由于未启用Python模块,Apache不会理解您的Python代码,只是输出完整的代码。
请在您的WAMP服务器中使用MOD_WSGI(不是MOD_PYTHON)。您可以在此处了解详情:https://code.google.com/p/modwsgi/
而且,这可以帮助您快速设置它:https://code.google.com/p/modwsgi/wiki/QuickConfigurationGuide
答案 2 :(得分:0)
尝试更改此行:
<form method="POST" action="C:\wamp\www\cgi-bin\nidhi.py">
对此:
<form method="POST" action="/cgi-bin/nidhi.py">
您希望该操作成为一个URL,该URL将通过您的服务器处理,而不是您的浏览器知道如何在没有您的服务器的情况下获取的本地文件的绝对路径。
答案 3 :(得分:0)
我也想通了你的标题行 内容类型:text / html \ n 需要改为 内容类型:text / html \ r \ n 这是做换行的Windows方式。