日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

2、基于wsgiref模块DIY一个web框架

發布時間:2023/12/10 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2、基于wsgiref模块DIY一个web框架 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一 web框架

Web框架(Web framework)是一種開發框架,用來支持動態網站、網絡應用和網絡服務的開發。這大多數的web框架提供了一套開發和部署網站的方式,也為web行為提供了一套通用的方法。web框架已經實現了很多功能,開發人員使用框架提供的方法并且完成自己的業務邏輯,就能快速開發web應用了。瀏覽器和服務器的是基于HTTP協議進行通信的。也可以說web框架就是在以上十幾行代碼基礎張擴展出來的,有很多簡單方便使用的方法,大大提高了開發的效率。

二 wsgiref模塊

最簡單的Web應用就是先把HTML用文件保存好,用一個現成的HTTP服務器軟件,接收用戶請求,從文件中讀取HTML,返回。如果要動態生成HTML,就需要把上述步驟自己來實現。不過,接受HTTP請求、解析HTTP請求、發送HTTP響應都是苦力活,如果我們自己來寫這些底層代碼,還沒開始寫動態HTML呢,就得花個把月去讀HTTP規范。正確的做法是底層代碼由專門的服務器軟件實現,我們用Python專注于業務邏輯。因為我們不希望接觸到TCP連接、HTTP原始請求和響應格式,所以,需要一個統一的接口協議來實現這樣的服務器軟件,讓我們專心用Python編寫Web業務。這個接口就是WSGI:Web Server Gateway Interface。而wsgiref模塊就是python基于wsgi協議開發的服務模塊。

from wsgiref.simple_server import make_serverdef application(environ, start_response):start_response('200 OK', [('Content-Type', 'text/html')])return [b'<h1>Hello, web!</h1>']httpd = make_server('', 8080, application)print('Serving HTTP on port 8000...') # 開始監聽HTTP請求: httpd.serve_forever()

三 DIY一個web框架

為了做出一個動態網站,我們需要擴展功能,比如用戶訪問url的路徑是login時提供一個登錄頁面,路徑是index時響應一個首頁面。

3.1 啟動文件:manage.py

from wsgiref.simple_server import make_server from views import * from urls import urlpatternsdef application(environ, start_response):#print("environ",environ)start_response('200 OK', [('Content-Type', 'text/html')])# 獲取當前請求路徑print("PATH_INFO",environ.get("PATH_INFO"))path=environ.get("PATH_INFO")# 分支func=Nonefor item in urlpatterns:if path == item[0]:func=item[1]breakif not func:ret=notFound(environ)else:ret=func(environ)return [ret]httpd = make_server('', 8080, application) # 開始監聽HTTP請求: httpd.serve_forever()

3.2 url控制文件:urls.py

from views import *urlpatterns = [("/login", login),("/index", home), ]

3.3 視圖文件:views.py

# 視圖函數 def home(environ):with open("templates/home.html", "rb") as f:data = f.read()return datadef login(environ):with open("templates/login.html", "rb") as f:data = f.read()return datadef notFound(environ):return b"<h1>404...</h1>"

3.4 模板文件Templates

login.html:

<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Title</title> </head> <body> <form action="http://127.0.0.1:8800" method="post">用戶名 <input type="text" name="user">密碼 <input type="text" name="pwd"><input type="submit"> </form> </body> </html>

home.html:

<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Title</title> </head> <body> <h3>This is index!</h3> </body> </html>

到這里,pyyuan這個包就是一個web框架,當這個框架的基礎上,添加業務功能就很簡單了,比如,我們添加一個查看時間的頁面,只需要完成兩部即可:

(1) 在urls.py中添加:

("/timer", timer),

(2) 在views.py中添加:

def timer(request):import datetimenow=datetime.datetime.now().strftime("%Y-%m-%d")return now.encode()

是不是很簡單,有了web框架,你就不用再從創建socket開始一行行碼代碼了!

轉載于:https://www.cnblogs.com/pyedu/p/10289253.html

總結

以上是生活随笔為你收集整理的2、基于wsgiref模块DIY一个web框架的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。