摘要:服務器會根據將請求交給相應的程序處理。函數稱為視圖函數。無參數當訪問網站根域名時,會執行函數,返回值的結果會在網頁中顯示。。而返回特殊狀態碼可在返回值中添加,代碼如下返回特殊狀態碼鍵值對形式后的鍵值對由提供對象處理。
Web框架
Web框架是構建Web應用的一種方式。盡管現在很多語言如PHP、Java都能開發Web應用,這些語言也都有相應成熟的Web框架,但是請求處理是這些Web框架的核心。知乎問答-如何學習Web框架 提到Web框架涉及的基本元素,請求處理是學習Web框架的首要問題。
Flask框架Flask 是一個用于 Python 的微型網絡開發框架。
Flask的‘微’體現在它只提供Web服務的基本功能,其他的功能是由Flask的擴展實現,用戶可以根據需求應用核心擴展。它的基本功能依賴于符合 WSGI 規范(Web Server Gateway Interface)的 Werkzeug 庫和模板系統 Jinja2。
當我們通過URL訪問網站時,是向Web服務器發送了請求。服務器會根據URL將請求交給相應的Web程序處理。所以服務器與Web應用程序的交互需要一定的規則。而Python專用的規范是WSGI [PEP-3333定義],文章 WSGI簡介 給出了簡單說明。
Flask涉及到兩個重要的類——Flask和Blueprint[藍本] 類。
flask的應用程序需要Flask類實例化才能運行,網站的基本配置信息也包含在此類中。
實例化如下:
from flask import Flask app = Flask(__name__)#__name__程序的文件名,通過此變量定位資源文件位置
配置如下:
app.config["CONFIGURATION"] = "CONFIGURATION"
Blueprint類與Flask類似,它能夠更好的組織Web應用程序,并能延遲Flask類實例的創建。
1. 路由和請求處理路由的存在是為了將Web服務的請求轉交給Flask程序實例的函數處理,簡單的說處理URL和函數之間的關系稱為路由。函數稱為視圖函數。
Flask類包含了route裝飾器,通過初始化Flask類注冊視圖函數。
@app.route("/") def index(): return "Hellow World
"
當訪問網站根域名時,會執行index函數,返回值的結果會在網頁中顯示。。
帶參數在很多時候用戶不同,使用的URL不同,帶參數的路由能夠很好的處理URL中變化的部分。如在網頁中顯示個人名字
@app.route("/user/") def user(name): return " Hello, {!r}
".format(name)
可指定的類型有int,float,path(路徑標識)
@app.route("/", methods=["GET", "POST"]) def index(): pass
當網頁需要處理表單等請求時,需要添加methods,使得視圖函數能夠處理http請求。methods中的參數包括了Http協議中定義的5種動作。
響應處理from flask import make_request @app.route("/"): response = make_request("Cookie
") response.set_cookie("answer","42") return response
響應處理中很重要的一部分是處理Http協議的狀態碼。Flask默認狀態碼是200。而返回特殊狀態碼可在返回值中添加,代碼如下:
@app.route("/") def index(): return "“"?" + 鍵值對“ 形式Bad Request
", 400 #返回特殊狀態碼
? 后的鍵值對由flask提供request對象處理。假設URL為127.0.0.1:5000?page=1
from flask import request @app.route("/", methods=["GET"]) def index(): page = request.args.get("page", type=int)2. 異常處理
在瀏覽網頁時,可能會遇到一些錯誤,flask提供abort函數拋出錯誤,而拋出的異常會直接返回給Web服務器。我們也可以自定義處理這些異常。代碼如下:
from flask import abort @app.route("/") def index(): abort(404) #拋出404異常 @app.errorhandler(404) def page_not_found(error): # 自定義處理異常 return "This page does not exist", 4043. 請求鉤子
請求鉤子是指在請求之前或之后所做的處理函數
函數名 | 功能 |
---|---|
before_first_request | 在處理第一個請求之前執行 |
before_request | 每次請求之前執行 |
after_request | 無異常,每次請求之后執行 |
teardown_request | 即使異常,也在請求之后執行 |
請求鉤子函數與視圖函數之間通過g變量共享數據。
問題Q1:如何調試Web應用程序?
Q2:如何評價Web應用程序的性能?
Q3:Web應用程序如何做單元測試?
《Flask Web 開發》SegmentFault系列文章 - 作者只錄入了前七章內容,未涉及實例開發部分
《Flask Web 開發》中文版 - 建議入手第二版
《Flask Web 開發》作者Blog - 書中有任何疑問可以在文章中搜索
Flask大型教程項目Blog
Flask API文檔
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/37783.html
摘要:學習資源中文學習大本營強烈推薦開發從小白開始學習資料推薦一些資源好文使用小結實例開發博客常用命令打包包中的依賴包安裝依賴包擴展為應用提供編寫腳本的功能。可以用來運行一個開發服務器,也可以與數據庫交互,方便開發。 學習資源 Python 中文學習大本營(Explore Flask強烈推薦) Flask 開發從小白開始 cnblog-Flask 學習資料 推薦一些Flask資源 Fl...
摘要:簡介是一個輕量級的框架如果要學習開發非常適合作為我們學習的起點通過接下來的這一些列的博客我們將學習如何利用以及其他工具搭建一個簡單的網站開發環境命令如下第一個首先我們創建一個文件夾并在其中新建一個文件接著我們打開按照的示例 簡介 Flask 是一個輕量級的 Web 框架, 如果要學習 Web 開發, Flask 非常適合作為我們學習的起點. 通過接下來的這一些列的博客, 我們將學習如何...
摘要:示例如下靜態路由使用動態變量的路由未指定變量類型使用動態變量的路由指定變量類型指定的路由變量,可以作為被裝飾的函數參數傳入進來。 開始決定認真的在網上寫一些東西,主要原因還是在于希望能提升學習效果。雖說python寫了有幾年,但是web后端框架的確沒怎么接觸過,買了本狗書寥寥草草的過了一遍,發現很多東西還是理解不深,真的是好記性不如爛筆頭,知識也要從基礎開始,退回來好好看看官方文檔,再...
摘要:和是最受歡迎的。虛擬環境將允許將項目依賴項與本地機器依賴項隔離開來。文件將是項目中的主文件。運行后,檢查本地主機。在中創建一個名為的文件夾,并創建一個名為的文件夾。部署創建帳戶為前端和全棧應用程序提供免費部署服務。 ...
閱讀 2536·2023-04-25 19:47
閱讀 3383·2019-08-29 17:18
閱讀 856·2019-08-29 15:26
閱讀 3360·2019-08-29 14:17
閱讀 1116·2019-08-26 13:49
閱讀 3339·2019-08-26 13:22
閱讀 3023·2019-08-26 10:44
閱讀 2693·2019-08-23 16:51