Python CGI
什么是CGI
CGI(通用网关接口)是一种用于在Web服务器上执行外部程序的标准。当浏览器请求 CGI 程序时,服务器会调用该程序并将输出返回给浏览器。Python也可以用来编写CGI脚本,用于处理Web服务器上的动态内容。
搭建Python CGI 环境
要在Web服务器上运行Python CGI脚本,首先需要确保服务器支持CGI,并且Python解释器已经安装在服务器上。接下来,我们可以编写一个简单的Python CGI脚本,示例代码如下:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
print("Content-type: text/html\n")
print("<html><head><title>CGI Test</title></head></html>")
print("<body>")
print("<h1>Hello, deepinout.com!</h1>")
print("</body></html>")
在上面的示例代码中,我们创建了一个简单的Python CGI脚本,用于在浏览器上显示”Hello, deepinout.com!”。接下来,我们将该脚本命名为hello.py
并上传到Web服务器的CGI目录中。在浏览器中访问http://yourdomain.com/cgi-bin/hello.py
,您将看到显示在页面上的”Hello, deepinout.com!”。
传递参数给 Python CGI
除了简单的输出文本,Python CGI 还可以接受来自浏览器的参数。示例代码如下:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import cgi
form = cgi.FieldStorage()
name = form.getvalue('name')
print("Content-type: text/html\n")
print("<html><head><title>CGI Test</title></head></html>")
print("<body>")
print(f"<h1>Hello, {name} from deepinout.com!</h1>")
print("</body></html>")
在上面的示例代码中,我们从浏览器中获取名为name
的参数,并在页面上显示Hello, name from deepinout.com!
。您可以在浏览器中访问http://yourdomain.com/cgi-bin/hello.py?name=Python
,您将看到显示在页面上的”Hello, Python from deepinout.com!”。
CSS 样式和 Python CGI
Python CGI 也可以与CSS样式一起使用,实现更加美观的页面布局。示例代码如下:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
print("Content-type: text/html\n")
print("<html><head><title>CGI Test</title>")
print("<style>")
print("h1 {color: blue;}")
print("p {font-size: 16px;}")
print("</style></head></html>")
print("<body>")
print("<h1>Hello, deepinout.com!</h1>")
print("<p>Welcome to Python CGI tutorial.</p>")
print("</body></html>")
在上面的示例代码中,我们通过CSS样式设定了h1
和p
标签的颜色和字体大小。您可以在浏览器中访问http://yourdomain.com/cgi-bin/hello.py
,您将看到一个带有样式效果的页面。
文件上传和 Python CGI
Python CGI 还可以处理文件上传的功能。示例代码如下:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import cgi
form = cgi.FieldStorage()
if "file" in form:
fileitem = form["file"]
if fileitem.file:
fname = fileitem.filename
with open(fname, 'wb') as f:
f.write(fileitem.file.read())
print("Content-type: text/html\n")
print("<html><head><title>File Upload</title></head></html>")
print("<body>")
print(f"<h1>File {fname} uploaded successfully!</h1>")
print("</body></html>")
else:
print("Content-type: text/html\n")
print("<html><head><title>File Upload</title></head></html>")
print("<body>")
print("<h1>File upload failed!</h1>")
print("</body></html>")
在上面的示例代码中,我们编写了一个简单的文件上传处理程序。当用户上传文件时,Python CGI 将保存文件到服务器上,然后显示”File uploaded successfully!”。您可以在浏览器中访问一个带有文件上传表单的页面,然后选择文件上传,即可触发Python CGI脚本的执行。
总结
通过本文的介绍,我们了解了Python CGI的基本概念和用法,包括搭建Python CGI环境、传递参数、使用CSS样式和处理文件上传。Python CGI 是一个强大的工具,可以用于创建动态的Web应用程序。