CGI(Common Gateway Interface)是指URL与web服务器之间的接口,CGI程序可以被作为web服务器的一部分来执行,通过用户的请求生成动态的web页面。Python作为一门脚本语言,可以轻松地编写CGI程序,并通过生成动态网页来提供交互性的网站。
一、CGI基础知识
1. CGI是什么?
CGI是一种通用的接口,它使得Web服务器可以调用其他程序来处理Web请求。当Web浏览器请求访问Web页面时,Web服务器会把CGI程序看做是一款普通的可执行文件,运行该程序并将生成的结果返回给Web浏览器。
2. 如何使用CGI实现动态网页?
通过编写CGI程序,可以处理表单数据、数据库操作、文件上传等多种任务。CGI程序通常与Web服务器一起创建,当有用户请求访问Web页面时,Web服务器会发送CGI请求到指定的服务器地址,在服务器上运行CGI程序,并将结果发送回Web浏览器。
3. CGI是如何运作的?
当Web浏览器请求访问Web页面时,Web服务器会收到该请求并把它作为参数传递给CGI程序。CGI程序会将请求的信息解析成环境变量(如HTTP_COOKIE、QUERY_STRING等),通过标准输入接收请求的数据,并通过标准输出返回生成的网页。返回的网页数据会由Web服务器发送给Web浏览器。
二、Python CGI基础应用
1. 生成HTML页面
Python提供了CGI模块,用于生成HTML页面。CGI模块包含一个CGI类,该类可以处理请求并返回动态HTML页面。
#!/usr/bin/python # -*- coding: UTF-8 -*- import cgi # 创建CGI对象 form = cgi.FieldStorage() # 获取表单参数 name = form.getvalue('name') # 返回HTML页面 print("Content-type:text/html") print() print("") print("") print("Hello Word - Python CGI ") print("") print("") print("Hello %s
" % (name)) print("") print("")
该程序通过获取表单参数并返回HTML页面,向用户打招呼。在浏览器中输入网页地址,即可看到效果。代码中的print语句会将对应的HTML标签输出到浏览器上。
2. 显示系统信息
使用Python CGI还可以显示系统信息。Python自带的platform模块包含了获取系统信息的函数,在CGI中可以利用该模块来获取系统信息并返回HTML页面。
#!/usr/bin/python # -*- coding: UTF-8 -*- import cgi import platform # 返回HTML页面 print("Content-type:text/html") print() print("") print("") print("System Info - Python CGI ") print("") print("") print("System Info
") print("Processor: %s
" % (platform.processor())) print("Operating System: %s
" % (platform.system())) print("Python Version: %s
" % (platform.python_version())) print("") print("")
该程序通过platform模块获取系统信息并返回HTML页面。在浏览器中输入网页地址,即可看到包含系统信息的页面。
三、Python CGI进阶应用
1. 利用CGI实现用户登录
通过CGI程序可以实现用户登录功能。用户输入用户名和密码,CGI程序验证并返回登录成功或失败的信息。
#!/usr/bin/python # -*- coding: UTF-8 -*- import cgi # 登录用户信息 users = [ {'name': 'user1', 'password': 'pwd1'}, {'name': 'user2', 'password': 'pwd2'}, {'name': 'user3', 'password': 'pwd3'} ] # 创建CGI对象 form = cgi.FieldStorage() # 获取表单参数 name = form.getvalue('name') password = form.getvalue('password') # 查找用户信息 user = None for u in users: if u['name'] == name and u['password'] == password: user = u # 返回登录结果 print("Content-type:text/html") print() print("") print("") print("Login - Python CGI ") print("") print("") if user: print("Login successfully, welcome %s
" % (name)) else: print("Login failed, please check your name and password.
") print("") print("")
该程序实现了一个简单的用户登录功能。在浏览器中输入用户名和密码,CGI程序验证用户信息并返回登录结果。
2. 利用CGI实现文件上传
CGI还可以实现文件上传功能。用户选择上传的文件,CGI程序获取并存储文件。
#!/usr/bin/python # -*- coding: UTF-8 -*- import cgi import os # 创建CGI对象 form = cgi.FieldStorage() # 保存文件 fileitem = form['filename'] if fileitem.filename: fn = os.path.basename(fileitem.filename) open('/tmp/' + fn, 'wb').write(fileitem.file.read()) # 返回结果 print("Content-type:text/html") print() print("") print("") print("File Upload - Python CGI ") print("") print("") if fileitem.filename: print("The file %s is uploaded successfully.
" % (fn)) else: print("No file is uploaded.
") print("") print("")
该程序实现了文件上传功能。在浏览器中选择文件并上传,CGI程序获取并存储文件,并返回上传结果。
四、总结
Python CGI作为一种生成动态网页的技术,可以通过多种方式来实现用户交互和数据处理。通过本文的介绍,读者可以了解到Python CGI的基本原理和使用方法,并可以尝试编写自己的CGI程序。
原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/239734.html