基於wsgiref web框架
from wsgiref.******_server import make_server
from urls import urls
from views import
*def
run(env, response)
:'''
:param env: 請求相關的所有資料型別
:param response: 相應相關的資料型別
:return: 返回給瀏覽器的資料
'''# print(env) # env 是乙個大字典,wsgiref模組將http格式的資料轉化成大字典
response(
'200 ok',[
])current_path = env.get(
'path_info'
) func =
none
for url in urls:
if current_path == url[0]
: func = url[1]
break
# 匹配到乙個後應該立刻結束for迴圈
if func:
res = func(env)
else
: res = error(env)
return
[res.encode(
'utf-8')]
if __name__ ==
'__main__'
: server = make_server(
'127.0.0.1'
,8080
,run)
'''
會實時監聽127.0.0.1:8080 位址,只要客戶端來了都會交給run函式處理(會自動加括號『run()'觸法run函式的執行)
flask啟動原始碼
make_server('127.0.0.1',8080,obj)
也會自動給obj加括號
__call__
'''server.serve_forever(
)# 啟動伺服器
urls 檔案
from views import
*# url與函式的對應關係
urls =[(
'/index'
, index),(
'/login'
, login),(
'/***'
, ***),(
'/get_time'
, get_time),(
'/get_dict'
, get_dict)
]
views 檔案
def
index
(env)
:return
'index'
deflogin
(env)
:return
'login'
deferror
(env)
:return
'404'
def***
(env)
:with
open
(r'templates/02myxx.html'
,'r'
, encoding=
'utf-8'
)as f:
return f.read(
)import datetime
defget_time
(env)
: current_time = datetime.datetime.now(
).strftime(
'%y-%m-%d-%x')#
with
open
(r'templates/03mytime.html'
,'r'
,encoding=
'utf-8'
)as f:
data = f.read(
)# data就是一串字串
data = data.replace(
'dddd'
, current_time)
return data
''' jinja2
'''from jinja2 import template
defget_dict
(env)
: user_dict =
with
open
('templates/04get_dict.html'
,'r'
,encoding=
'utf-8'
)as f:
data = f.read(
) tmp = template(data)
res = tmp.render(user =user_dict)
# 給get_dict.html 傳遞乙個值,也頁面上通過變數名user就能夠拿到user_dict
return res
import pymysql
defget_user
(env)
: coon = pymysql.connect(
host =
'127.0.0.1'
, port =
3306
, user =
'root'
, password =
'2802017872liu'
, db =
'day59'
, charset =
'utf8'
, autoicommit =
true
) cursor = coon.cursor(cursor=pymysql.cursors.dictcursor)
sql =
'select * from userinfo'
affect_rows = cursor.execute(sql)
dat_list = cursor.fetchall(
)# 將獲取到的資料傳輸給html檔案
基於IHttpHandler 的非標準webapi
基於ihttphandler 的非標準webapi 此篇文章是本菜鳥對於公司大神自研框架的研究,也就是扒 如有不足請指出 先舉個栗子,在命名空間abc.websiteapi下有systemuserapiapi類,類中有create這個方法 namespace abc.websiteapi 想要做到通...
Linux專案 基於HTTP協議的自主web伺服器
前言在學習了網路基礎方面的知識後,想要將自己所學習的網路知識應用到實踐中,因此,模擬實現乙個基於http協議的小型web伺服器 專案描述 採用b s模型或者c s模型 瀏覽器 伺服器模型 編寫支援中小型應用的http,理解常見網際網路應用行為 從上網到關閉瀏覽器的所有操作 模擬實現了使用瀏覽器上網背...
如何在騰訊雲上發布基於tomcat的web專案
目錄 這裡就不在贅述了。因為我用的是window server2012,該作業系統自動遮蔽掉ping命令了,所以頭疼了好久。因為專案只需要用到80埠,所以只需要開放80埠就行,當然也可以根據需要,開放別的埠。甚至關閉防火牆 4.1 開啟控制面板控制面板 系統和安全 windows 防火牆。點選高階設...