python服務端框架學習 Flask

2021-10-10 08:44:38 字數 2778 閱讀 9517

flask是輕量級的服務端web框架,附帶了發布網頁的最低要求。通過定製第三方擴充套件來實現具體功能如資料庫,表單控制項等。可定製性,通過擴充套件增加其功能,這是flask最重要的特點。flask的兩個主要核心應用是werkzeug和模板引擎jinja。

所有flask程式必須有乙個程式例項。

flask呼叫檢視函式後,會將檢視函式的返回值作為響應的內容,返回給客戶端。一般情況下,響應內容主要是字串和狀態碼。

當客戶端想要獲取資源時,一般會通過瀏覽器發起http請求。此時,web伺服器使用wsgi(web server gateway inte***ce)協議,把來自客戶端的所有請求都交給flask程式例項。wsgi是為 python 語言定義的web伺服器和web應用程式之間的一種簡單而通用的介面,它封裝了接受http請求、解析http請求、傳送http,響應等等的這些底層的**和操作,使開發者可以高效的編寫web應用。

程式例項使用werkzeug來做路由分發(url請求和檢視函式之間的對應關係)。根據每個url請求,找到具體的檢視函式。 在flask程式中,路由的實現一般是通過程式例項的route裝飾器實現。route裝飾器內部會呼叫add_url_route()方法實現路由註冊。

呼叫檢視函式,獲取響應資料後,把資料傳入html模板檔案中,模板引擎負責渲染響應資料,然後由flask返回響應資料給瀏覽器,最後瀏覽器處理返回的結果顯示給客戶端。

新建檔案hello.py:

#匯入flask類

from flask import flask

#flask類接收乙個引數__name__

#裝飾器的作用是將路由對映到檢視函式index

def index():

return 'hello world'

#flask應用程式例項的run方法啟動web伺服器,僅適用於本地模式

if __name__ == '__main__':

#debug=true會使指令碼將任何flask錯誤直接列印到瀏覽器中。

1.以適當的建模方法快速實現web應用程式的目標

2.設計和開發本地web應用程式

3.部署到雲平台

乙個檔案中寫入多個路由,這會使**維護變得困難

問題:乙個程式執行檔案中,功能**過多。就是讓**模組化。根據具體不同功能模組的實現,劃分成不同的分類,降低各功能模組之間的耦合度。python中的模組製作和匯入就是基於實現功能模組的封裝的需求。

藍圖:用於實現單個應用的檢視、模板、靜態檔案的集合。

藍圖就是模組化處理的類。

簡單來說,藍圖就是乙個儲存操作路由對映方法的容器,主要用來實現客戶端請求和url相互關聯的功能。 在flask中,使用藍圖可以幫助我們實現模組化應用的功能。

藍圖是儲存了一組將來可以在應用物件上執行的操作。註冊路由就是一種操作,當在程式例項上呼叫route裝飾器註冊路由時,這個操作將修改物件的url_map路由對映列表。當我們在藍圖物件上呼叫route裝飾器註冊路由時,它只是在內部的乙個延遲操作記錄列表defered_functions中新增了乙個項。當執行應用物件的 register_blueprint() 方法時,應用物件從藍圖物件的 defered_functions 列表中取出每一項,即呼叫應用物件的 add_url_rule() 方法,這將會修改程式例項的路由對映列表。

blueprint必須指定兩個引數,api_export表示藍圖的名稱,__name__表示藍圖所在模組

api_export= blueprint(『api_export』,name)

@api_export.route(』/』)

def index():

return 『index』

from flask import flask

from flask_restful import api

from flasgger import swagger,swag_from

from export_api import api_export

#例項化

]}#例項化乙個 api 物件,用來建立、管理 restful api

#註冊藍圖

#主程式開始

if __name__ == "__main__":

建立藍圖:/export_api.py

from flask import blueprint,request

api_export= blueprint('api_export',__name__)

@api_export.route('/list/all',methods=['get'])

def listcfg():

"""獲取配置檔案內容

---tags:

- 獲取配置

parameters:

- in: path

name: none

type: none

required: false

responses:

200:

description: a dict string

"""return ""

ET框架 服務端 Program學習筆記

在寫服務端之前,我是先看的客戶端 而et框架,服務端和客戶端的 很多都是共用的,這也是et方便的一點。所以,如果你是直接來看服務端的,希望你對客戶端的 已經有了足夠的了解,之前在客戶端講過的 我會一筆帶過。這裡是客戶端 學習筆記的入口。通過landlordscore 學習et框架。非同步方法全部會回...

react服務端渲染框架

客戶端渲染 載入乙個空的html頁面,然後請求乙個打包的js檔案,然後再客戶端執行這個js檔案 動態生成html內容然後插入到dom元素上,在源 查詢中也只能看到空的html文件 沒有任何其他內容 服務端渲染 載入出來的就帶有完整的html文件內容 同時帶有資料 流程 瀏覽器傳送請求 伺服器端執行r...

C SuperWebSocket服務端學習(二)

1,開啟vs2012,新建乙個控制台應用程式,選擇.net4.0版本 2,新增引用 supersocket的dll檔案 supersocket.common.dll,supersocket.socketbase.dll,supersocket.socketengine.dll 到此專案的引用 版本選...