“CGI(Common Gateway Interface,通用网关接口) 是Web 服务器运行时外部程序的规范,按CGI 编写的程序能够扩展服务器功能。”(百度百科)Python语言自带CGI处理模块,能够经过编写python CGI脚本实现网页前端与Python程序的交互。从网页前端获取的数据每每又能够经过connector-python实现与MySQL等数据库的交互,从而从整个项目的角度来讲,该环境的搭建和运行是实现Python CGI全栈的整个过程的第一个较为重要的步骤。本文旨在论述Python CGI开发运行环境的两个配置方法。html
编写好的python CGI脚本须要在主机(服务器)的特定配置下才能正常运行。本例选择xampp server为例。xampp server是Apache server的一种,可用于搭建本地小微型服务器,下载地址为:https://www.apachefriends.org/index.html 。xampp相关的周边产品详见连接:https://bitnami.com/stack/xampp?utm_source=bitnami&utm_medium=installer&utm_campaign=XAMPP%2BInstaller前端
安装完毕后,单击Apache control panel中Apache 模块后的config按钮,选择httpd.conf。在打开的文本文档中按Ctrl + F搜索关键词“addhandler”,并在如图所示处加入python脚本的文件扩展名.py。python
xampp安装完毕以后,打开路径中的htdocs文件夹,在其中新建文件夹My_projects,而且编写一个仅含有一个文本框和一个按钮,且所用语言为英语的简易网站(charset为utf-8时,若不更改原始设置会致使xampp server报error 500错误,此处入门简介为了简便,便暂时不处理此问题)。该建议html脚本以下:web
<html> <title>Wish collecting website</title> <body> <form method=POST action="../cgi-bin/My_projects/chap01_01_Hellocgi.py"> <p>Input your wish: </br> <p><input type=text name=thing> <p><input type=submit value='Submit your wish!'> </form> </body> </html>
该脚本路径为”xampp软件安装路径”本机XAMPP安装目录\htdocs\My_projects\Submit_wish.html”,运行效果如图:数据库
该脚本也比较简单,为读入提交上述html的表单中的数据而且以必定形式输出在浏览器中,脚本以下:apache
#!C:/Develop_Tools/Anaconda3/python import cgi form = cgi.FieldStorage() print("Cotent-type: text/html\n") print("Hope that your wish: \"", form['thing'].value, "\" comes true!")
其中,第1行为声明当前系统中Python解释器的路径,视系统不一样须要做出相应修改。第四行html后的换行符(”\n”)不能省略且必须放置于正式内容以前。根据通常的cgi项目规范,被执行的CGI脚本应当被放置于cgi-bin文件夹中(虽然放在同一级目录中亦可,可是出于安全性等缘由通常不会这么作)。脚本路径位为:”本机XAMPP安装目录\cgi-bin\My_projects\chap01_01_Hellocgi.py”。编程
至第三步为止,该交互程序就编写完毕了,最后打开Submit_wish.html这个网页文档,并运行本地的Apache server进行调试,如图所示:浏览器
注意:网页文件的路径”本机XAMPP安装目录\htdocs\My_projects\Submit_wish.html”在调试时应当变动为:” https://WEB_SERVER_URL/My_projects/Submit_wish.html” 。其中WEB_SERVER_URL为网页所在的IP地址,本机调试下值为localhost或127.0.0.1。 其中https视状况也可能为http。安全
CGI编程的调试过程还能够经过自建python脚本做为CGI服务器实现,该脚本以下:服务器
# -*- coding: utf-8 -*- import os from http.server import HTTPServer, CGIHTTPRequestHandler webdir = "./" port = 80 os.chdir(webdir) srvraddr = ("localhost", port) srvrobj = HTTPServer(srvraddr, CGIHTTPRequestHandler) srvrobj.serve_forever()
而后,在该脚本所在路径新建一个文件夹,命名为cgi-bin,而且将方法一第三步的脚本放入这其中。
以后,把上述方法一第二步 html 脚本的第四行路径视状况做出相应的修改,若是在方法一中放入的就是cgi文件相关目录下,则不用修改: <form method=POST action="../cgi-bin/My_projects/chap01_01_Hellocgi.py">
,若是在自建的cgi-bin文件夹下没有My_projects这个文件夹,而是直接将cgi脚本放入其中,则能够改为:<form method=POST action="../cgi-bin/chap01_01_HellocgiV2.py">
。运行效果以下(假设调试运行环境即为本机):
建议:为了调试简便性以及路径管理方便性,建议将自建的服务器脚本、网页入口页面和cgi-bin文件夹放在同一个目录下,python cgi脚本直接放入cgi-bin文件夹中。
本文简要讲述了Python CGI编程的搭建、调试和运行过程。这一过程是使用Python将前端数据经过CGI转化为Python程序可以进行处理的重要一步,于是理解这一过程有利于为进一步使用Python进行全栈开发打下了技术基础。顺祝各位有志全栈的同窗们在全栈的道路上行进顺利。