wsgiref實現多個URL的WEB伺服器
阿新 • • 發佈:2022-04-09
from wsgiref.simple_server import make_server
#可以訪問一個頁面
def xiaoxue(webenvirment,start_response):
print('xiaoxue page') #訪問對於4應網頁時,伺服器後臺列印的內容
start_response("200 0k", [('Content-Type', 'text/html;charset=utf-8')]) # text型別不對時,瀏覽器返回的效果不同
return[bytes('<h2>歡迎來到小學專區</h2>',encoding="utf-8")]
def zhongxue(webenvirment,start_response):
print('zhongxue page')
start_response("200 0k", [('Content-Type', 'text/html;charset=utf-8')]) # text型別不對時,瀏覽器返回的效果不同
return [bytes('<h2 style="font-size:70px">歡迎來到中學專區</h2>', encoding="utf-8")]
def daxue(webenvirment,start_response):
print('daxue page')
start_response("200 0k", [('Content-Type', 'text/html;charset=utf-8')]) # text型別不對時,瀏覽器返回的效果不同
return [bytes('<h2 style="font-size:70px">歡迎來到大學專區</h2>', encoding="utf-8")]
def url_dispach(): #路由分發器
urls={
"/xiaoxue":xiaoxue, #前面是url的子頁面,前面需要加/,否則無法訪問,後面一個函式
"/zhongxue":zhongxue,
"/daxue":daxue
}
return urls
def run_server(webenvirment,start_response):
url_list=url_dispach() #拿到所有頁面的url
request_url=webenvirment.get("PATH_INFO")
if request_url in url_list:
func_data=url_list[request_url](webenvirment,start_response)
return func_data #返回頁面內容給使用者
else: #訪問不存在的網頁時執行
print('不存在的網頁')
start_response("404 no find page", [('Content-Type','text/html;charset=utf-8')]) # 404後的內容必須填寫
return [bytes('<h2 style="color:red">404,未找到你訪問的頁面</h2>', encoding="utf-8")]
s=make_server('localhost',8001,run_server)
s.serve_forever()