windows 环境下安装搭建Python的CGI环境 - 简单小案例
windows 环境下安装搭建Python的CGI环境 - 简单小案例
- 前言
- 一、CGI是什么?
- 二、windows下搭建python的CGI环境
- 1.下载Apache服务器
- 2.开始尝试运行
- 小案例
- 总结
前言
看了个案例,于是对CGI开始感兴趣,摸索了一下。记录一下学习过程,好记性不如烂笔头系列…
提示:以下是本篇文章正文内容,下面案例可供参考
一、CGI是什么?
翻阅了一些资料,通俗点的理解就是:放置在服务器上面一段可以执行的程序,作为http服务器时,客户端可以用get/post方式来请求程序。
二、windows下搭建python的CGI环境
1.下载Apache服务器
下载地址:https://www.apachehaus.com/cgi-bin/download.plx
下载好后直接解压,修改配置文件即可。
选择conf文件加下的httpd.conf进行编辑修改
<Directory "${SRVROOT}/cgi-bin">
AllowOverride all
Options all
AddHandler cgi-script .cgi .pl .py
Require all granted
</Directory>
cmd命令进入apache安装目录下bin路径 输入 httpd -k install命令 将其安装成windows服务
我安装好后忘记截图了,抱歉…
界面显示简单的两行,结尾是:Service is already installed. 则表示你安装成功了。如果!!!你提示了这个错误:
解决方案应该蛮多的,但是我选择了最快的方式。
然后咱们启动服务,计算机进入服务界面,启动他!!!
如果启动失败,重启电脑或许可以帮你解决(我就是这么解决的,哈哈哈哈哈哈)
最后,在浏览器输入localhost:8089(我用的是8089的端口哈,你的就看你在httpd.conf文件里改成啥了,没改则是80)。看看有没有出现默认界面,出现了则表示你安装成功了。
2.开始尝试运行
先写一个简单的例子试试水,创建一个study.py内容如下:
划重点!!!如果是windows环境下,一定要记得把#!/usr/bin/env python 换成 #!E:\1_toolbox\Python\Python3.7\python.exe (你自己的python执行文件的完整路径!!!)
#!E:\1_toolbox\Python\Python3.7\python.exe
# -*- coding: UTF-8 -*-
print("Content-type:text/html;charset=GBK")
# 空行,告诉服务器结束头部,没有会报错
print()
print('<html>')
print('<head>')
print('<meta charset="utf-8">')
print('<title>Hello CGI 程序!</title>')
print('</head>')
print('<body>')
print('<h2>Hello,这是windows下的CGI程序</h2>')
print('</body>')
print('</html>')
然后咱们把这个study.py文件扔到apache安装目录下的cgi-bin文件夹下即可
再然后呢,咱们试着运行下该文件,看看它是否很乖
嗯…很乖,如果它不乖的话,请记得去看日志: logs文件夹下的error.log
小案例
写一个小案例,请求CGI程序并提交普通文本、单选框、文本域、文件等数据
创建一个demo.html文件
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>CGI 练习小Demo</title>
</head>
<body>
<form action="http://localhost:8089/cgi-bin/study2.py" method="post" enctype="multipart/form-data" >
姓名:
<input type="text" name="name" />
<br/>
性别:
<input type="radio" name="sex" value="男" checked/>男
<input type="radio" name="sex" value="女" />女
<br/>
职位:
<select name="job">
<option value="软件开发" selected>软件开发</option>
<option value="软件测试">软件测试</option>
<option value="软件运维">软件运维</option>
</select>
<br/>
<p>上传资料: <input type="file" name="filename" /></p>
<textarea name="content" cols="40" rows="4">
在这里输入该成员的描述......
</textarea>
<br/>
<input type="submit" value="提交" />
</form>
</body>
</html>
创建一个study2.py文件
#!E:\1_toolbox\Python\Python3.7\python.exe
# -*- coding:utf-8 -*-
# CGI处理模块
import cgi
import os
# 一定要导入这个,虽然不太清楚他是处理异常的,不加为什么我正常的程序会跑不下去
import cgitb
cgitb.enable()
# 创建 FieldStorage 的实例化
form = cgi.FieldStorage()
# 获取数据并判断是否为空
if form.getvalue('name'):
name = form.getvalue('name')
else:
name = '未输入'
sex = form.getvalue('sex')
job = form.getvalue('job')
content = form.getvalue('content')
fileItem = form['filename']
if fileItem.filename:
fn = os.path.basename(fileItem.filename)
# 创建并写入文件
open('F:\\' + fn, 'wb').write(fileItem.file.read())
message = '文件 "' + fn + '" 上传成功'
else:
message = '文件没有上传'
print("Content-type:text/html;charset=GBK")
# 空行,告诉服务器结束头部,没有会报错
print()
print('<html>')
print('<head>')
print('<meta charset="utf-8">')
print('<title>Hello World - 我的第一个 CGI 程序!</title>')
print('</head>')
print('<body>')
print('<h2>请录入成员信息:</h2>')
print('<h2>姓名:%s' % name)
print('<h2>性别:%s' % sex)
print('<h2>职位:%s' % job)
print('<h2>个人描述:%s' % content)
print('<h2>上传状态:%s' % message)
print('</body>')
print('</html>')
总结
一般在linux环境用的多,但我在本地研究嘛,所以用的windows系统,至于linux的操作嘛想必很多大神都有说~好啦,作业提交完成,有什么问题欢迎指出!又是小白努力向上的一天!
本文参考自:https://www.runoob.com/python/python-cgi.html
weixin_57313716: 为啥我跟着你的自动运行那一步就不通了尼
人间有味是清欢_: 哈哈哈偷懒都忘记这回事了
daydayupergouzi: 啥时候才能学到头啊
qq_37463809: 这玩样比php烦太多了。php几行代码就搞定了。
奋斗的鹏哥: 为什么那个收件人写不进去