初探Python CGI:搭建CGI編程調試環境 原

“CGI(Common Gateway Interface,通用網關接口) 是Web 服務器運行時外部程序的規範,按CGI 編寫的程序可以擴展服務器功能。”(百度百科)Python語言自帶CGI處理模塊,可以通過編寫python CGI腳本實現網頁前端與Python程序的交互。從網頁前端獲取的數據往往又可以通過connector-python實現與MySQL等數據庫的交互,從而從整個項目的角度來說,該環境的搭建和運行是實現Python CGI全棧的整個過程的第一個較爲重要的步驟。本文旨在論述Python CGI開發運行環境的兩個配置方法。

CGI編程環境配置方法一:搭建本地微服務器,以xampp爲例

第一步:下載安裝服務器xampp

編寫好的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。

第二步:編寫簡易html腳本

xampp安裝完畢之後,打開路徑中的htdocs文件夾,在其中新建文件夾My_projects,並且編寫一個僅含有一個文本框和一個按鈕,且所用語言爲英語的簡易網站(charset爲utf-8時,若不更改原始設置會導致xampp server報error 500錯誤,此處入門簡介爲了簡便,便暫時不處理此問題)。該建議html腳本如下:

<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”,運行效果如圖:

第三步:編寫CGI交互腳本

該腳本也比較簡單,爲讀入提交上述html的表單中的數據並且以一定形式輸出在瀏覽器中,腳本如下:

#!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編程環境配置方法二:自建腳本作爲CGI服務器

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進行全棧開發打下了技術基礎。順祝各位有志全棧的同學們在全棧的道路上行進順利。

參考資料:

  1. 百度百科,https://baike.baidu.com/item/CGI/607810?fromtitle=%EF%BC%A3%EF%BC%A7%EF%BC%A9&fromid=6717913&fr=aladdin
  2. xampp下配置python cgi環境的參考視頻:https://www.youtube.com/watch?v=hv77IgkojfQ
  3. cgi允許python腳本運行相關配置:https://www.youtube.com/watch?v=T18tlQyQkrQ
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章