日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

python Web 之基石 - - CGI 編程 (基于python3)

系統(tǒng) 1810 0

一 、CGI 編程之前綴篇

CGI 目前由NCSA維護(hù),NCSA定義CGI如下:
CGI(Common Gateway Interface),通用網(wǎng)關(guān)接口,它是一段程序,運(yùn)行在服務(wù)器上如:HTTP服務(wù)器,提供同客戶端HTML頁(yè)面的接口。

網(wǎng)頁(yè)瀏覽

為了更好的了解CGI是如何工作的,我們可以從在網(wǎng)頁(yè)上點(diǎn)擊一個(gè)鏈接或URL的流程:
1、使用你的瀏覽器訪問(wèn)URL并連接到HTTP web 服務(wù)器。
2、Web服務(wù)器接收到請(qǐng)求信息后會(huì)解析URL,并查找訪問(wèn)的文件在服務(wù)器上是否存在,如果存在返回文件的內(nèi)容,否則返回錯(cuò)誤信息。
3、瀏覽器從服務(wù)器上接收信息,并顯示接收的文件或者錯(cuò)誤信息。
CGI程序可以是Python腳本,PERL腳本,SHELL腳本,C或者C++程序等。
第一個(gè)CGI程序
我們使用Python創(chuàng)建第一個(gè)CGI程序,文件名為hello.py,文件位于/var/www/cgi-bin目錄中,內(nèi)容如下:

            
              print ("Content-type:text/html")
print ()                             # 空行,告訴服務(wù)器結(jié)束頭部
print ('')
print ('')
print ('
              
              ')
print ('
              
                Hello Word - 我的第一個(gè) CGI 程序!
              
              ')
print ('')
print ('')
print ('
              

Hello Word! 我是來(lái)自菜鳥教程的第一CGI程序

') print ('') print ('')

簡(jiǎn)單的url實(shí)例:GET方法

以下是一個(gè)簡(jiǎn)單的URL,使用GET方法向hello_get.py程序發(fā)送兩個(gè)參數(shù):

            
              import codecs ,sys 
sys.stdout = codecs.getwriter('utf8')(sys.stdout.buffer)

#CGI處理模塊
import cgi, cgitb 

#創(chuàng)建 FieldStorage 的實(shí)例化
form = cgi.FieldStorage() 

#獲取數(shù)據(jù)
site_name = form.getvalue('name')
site_url  = form.getvalue('url')

print ("Content-type:text/html")
print ()
print ("")
print ("")
print ("
              
              ")
print ("
              
                The site of Mr.chen 
              
              ")
print ("")
print ("
              
              ")
print ("
              ")
print ("")
print ("")
print ("
              

%s官網(wǎng):%s

" % (site_name, site_url)) print ("") print ("")

GET和POST方法
瀏覽器客戶端通過(guò)兩種方法向服務(wù)器傳遞信息,這兩種方法就是 GET 方法和 POST 方法。

使用GET方法傳輸數(shù)據(jù)
GET方法發(fā)送編碼后的用戶信息到服務(wù)端,數(shù)據(jù)信息包含在請(qǐng)求頁(yè)面的URL上,以"?"號(hào)分割, 如下所示:

http://www.test.com/cgi-bin/hello.py?key1=value1&key2=value2 有關(guān) GET 請(qǐng)求的其他一些注釋:
GET 請(qǐng)求可被緩存
GET 請(qǐng)求保留在瀏覽器歷史記錄中
GET 請(qǐng)求可被收藏為書簽
GET 請(qǐng)求不應(yīng)在處理敏感數(shù)據(jù)時(shí)使用
GET 請(qǐng)求有長(zhǎng)度限制
GET 請(qǐng)求只應(yīng)當(dāng)用于取回?cái)?shù)據(jù)
簡(jiǎn)單的url實(shí)例:GET方法
以下是一個(gè)簡(jiǎn)單的URL,使用GET方法向hello_get.py程序發(fā)送兩個(gè)參數(shù):

/cgi-bin/test.py?name=菜鳥教程&url=http://www.runoob.com
#!/usr/bin/python3

            
              CGI處理模塊
import cgi, cgitb 
#創(chuàng)建 FieldStorage 的實(shí)例化
form = cgi.FieldStorage() 
#獲取數(shù)據(jù)
site_name = form.getvalue('name')
site_url  = form.getvalue('url')

print ("Content-type:text/html")
print ()
print ("")
print ("")
print ("
              
              ")
print ("
              
                菜鳥教程 CGI 測(cè)試實(shí)例
              
              ")
print ("")
print ("")
print ("
              

%s官網(wǎng):%s

" % (site_name, site_url)) print ("") print ("")

使用POST方法傳遞數(shù)據(jù)

使用POST方法向服務(wù)器傳遞數(shù)據(jù)是更安全可靠的,像一些敏感信息如用戶密碼等需要使用POST傳輸數(shù)據(jù)。

以下同樣是hello_get.py ,它也可以處理瀏覽器提交的POST表單數(shù)據(jù):

            
              #!/usr/bin/python3
#CGI處理模塊
import cgi, cgitb 

#創(chuàng)建 FieldStorage 的實(shí)例化
form = cgi.FieldStorage() 

#獲取數(shù)據(jù)
site_name = form.getvalue('name')
site_url  = form.getvalue('url')

print ("Content-type:text/html")
print ()
print ("")
print ("")
print ("
              
              ")
print ("
              
                菜鳥教程 CGI 測(cè)試實(shí)例
              
              ")
print ("")
print ("")
print ("
              

%s官網(wǎng):%s

" % (site_name, site_url)) print ("") print ("")

以下為表單通過(guò)POST方法(method=“post”)向服務(wù)器腳本 hello_get.py 提交數(shù)據(jù):
下為表單通過(guò)POST方法(method=“post”)向服務(wù)器腳本 hello_get.py 提交數(shù)據(jù):

            
              
              
                菜鳥教程(runoob.com)
              
              
站點(diǎn)名稱:
站點(diǎn) URL:

https://www.runoob.com/python3/python3-cgi-programming.html


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 齐齐哈尔市| 东乌珠穆沁旗| 新宁县| 巩留县| 盱眙县| 拉萨市| 灵台县| 青浦区| 衡水市| 宁南县| 工布江达县| 东丰县| 怀安县| 丹江口市| 霍林郭勒市| 铜陵市| 关岭| 普陀区| 揭西县| 河曲县| 苍南县| 仁布县| 黄山市| 南城县| 株洲县| 松滋市| 汶川县| 油尖旺区| 芜湖市| 武乡县| 竹北市| 安西县| 珠海市| 巨野县| 中江县| 湖南省| 宁晋县| 南投市| 德化县| 长兴县| 湄潭县|