Python web開發(fā)簡單流程------->wsgiref

?????????????? Python? web開發(fā)簡單流程------->wsgiref

一,基礎(chǔ)入門:

from wsgiref.simple_server import make_server???? #引入wsgire模塊中的服務(wù)器,用作web服務(wù)器

def application(env, response):???????? # 定義web接口函數(shù)'''??? 定義了一個(gè)web接口函數(shù),可以接受瀏覽器客戶端發(fā)送的url地址,調(diào)用執(zhí)行函數(shù) 通過url地址調(diào)用執(zhí)行函數(shù)

:param env: 環(huán)境,表示瀏覽器發(fā)送的請(qǐng)求環(huán)境

:param response: 響應(yīng):表示服務(wù)器給瀏覽器客戶端 返回?cái)?shù)據(jù)【響應(yīng)數(shù)據(jù)】

response('200 OK', [('Content-type', 'text/html;charset=utf-8')])?? # 定義響應(yīng)內(nèi)容的格式[返回?cái)?shù)據(jù)的格式]

# 定義返回的數(shù)據(jù) msg =‘你好’

# 返回?cái)?shù)據(jù)【列表~表示可以返回很多數(shù)據(jù)——返回二進(jìn)制數(shù)據(jù)[字節(jié)數(shù)據(jù)]】??

# 擴(kuò)展;字符->字節(jié)encode? 字節(jié)->字符decode? ?

return [msg.encode('utf-8')]

if __name__ == "__main__":?

http_server = make_server('', 8000, application)? ? # 將接口函數(shù)(web項(xiàng)目)部署到服務(wù)器

# 參數(shù)1:web服務(wù)器部署的ip地址;空字符串表示本機(jī)地址? ? # 參數(shù)2:服務(wù)器部署的端口號(hào)? ? # 參數(shù)3:服務(wù)器中部署的web項(xiàng)目[網(wǎng)關(guān)接口函數(shù)]??

print('server is starting...')?

http_server.serve_forever()? ? # 啟動(dòng)服務(wù)器??

最后啟動(dòng)?? python 文件名.py runserver

總結(jié):客戶端通過url,找到web服務(wù)器中的項(xiàng)目,然后服務(wù)器調(diào)用接口函數(shù),得到數(shù)據(jù)

二,網(wǎng)頁視圖:

from wsgiref.simple_server import make_server

def application(env, response):

? ? response('200 OK', [('Content-type', 'text/html;charset=utf-8')])

? ? # 讀取網(wǎng)頁數(shù)據(jù)

? ? # with open('index.html', 'rb') as f:

? ? #? ? msg = f.read()

? ? f = open('index.html', 'rb') #(需要打開的網(wǎng)頁名稱)

? ? msg = f.read()

? ? f.close()

? ? # 返回?cái)?shù)據(jù)

? ? return [msg]

# 部署項(xiàng)目

if __name__ == "__main__":

? ? # 部署項(xiàng)目

? ? http_server = make_server('', 8000, application)

? ? print('server啟動(dòng)了...')

? ? # 啟動(dòng)項(xiàng)目

? ? http_server.serve_forever()

三,網(wǎng)頁視圖高級(jí)處理:

from wsgiref.simple_server import make_server

import views? #導(dǎo)入處理函數(shù)模塊(自定義的)

def application(env, resp):

? ? # 定義響應(yīng)頭

? ? resp('200 OK', [('Content-type', 'text/html;charset=utf-8')])

? ? # 判斷用戶的請(qǐng)求,跳轉(zhuǎn)不同的網(wǎng)頁

? ? path = env['PATH_INFO']? ? ?? #根據(jù)PATH_INFO來判斷用戶要跳轉(zhuǎn)到哪個(gè)頁面

? ? if path == '/login':??? 例如:

? ? ? ? return views.login(env, resp)

? ? elif path == '/register':

? ? ? ? return views.register(env, resp)

? ? # 讀取網(wǎng)頁數(shù)據(jù)

? ? with open('index.html', 'rb') as f:

? ? ? ? data = f.read()

? ? # 模擬從數(shù)據(jù)庫讀取了一個(gè)數(shù)據(jù)

? ? name = '老王'

? ? # 替換數(shù)據(jù)

? ? data = str(data, 'utf-8').replace('{{name}}', name)

? ? # 返回?cái)?shù)據(jù)

? ? return [data.encode('utf-8')]

# 啟動(dòng)入口

if __name__ == "__main__":

? ? http = make_server('', 9000, application)

? ? print('服務(wù)器啟動(dòng)了...等待客戶端連接中...')

? ? http.serve_forever()

總結(jié):env?? response只是一個(gè)參數(shù),也可以用其他變量來代替

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,506評(píng)論 19 139
  • 國家電網(wǎng)公司企業(yè)標(biāo)準(zhǔn)(Q/GDW)- 面向?qū)ο蟮挠秒娦畔?shù)據(jù)交換協(xié)議 - 報(bào)批稿:20170802 前言: 排版 ...
    庭說閱讀 12,306評(píng)論 6 13
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,626評(píng)論 18 399
  • 我站在一個(gè)分叉口,背后有一條路,那是來時(shí)的路。我的腳下分離出好幾條道路通向遠(yuǎn)方。 眼前的路被一片濃霧掩蓋,我看不清...
    瀟然灬閱讀 220評(píng)論 1 1
  • 他們,是一群“騙子” 通過偽裝,潛伏在失憶老人的身邊 他們是收銀員 看著老人過來購物 無論買多買少 從不要求他們付...
    珠海24小時(shí)閱讀 317評(píng)論 1 0

友情鏈接更多精彩內(nèi)容