成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

Flask學(xué)習(xí)

OnlyLing / 458人閱讀

摘要:服務(wù)器會(huì)根據(jù)將請(qǐng)求交給相應(yīng)的程序處理。函數(shù)稱(chēng)為視圖函數(shù)。無(wú)參數(shù)當(dāng)訪問(wèn)網(wǎng)站根域名時(shí),會(huì)執(zhí)行函數(shù),返回值的結(jié)果會(huì)在網(wǎng)頁(yè)中顯示。。而返回特殊狀態(tài)碼可在返回值中添加,代碼如下返回特殊狀態(tài)碼鍵值對(duì)形式后的鍵值對(duì)由提供對(duì)象處理。

Web框架

Web框架是構(gòu)建Web應(yīng)用的一種方式。盡管現(xiàn)在很多語(yǔ)言如PHP、Java都能開(kāi)發(fā)Web應(yīng)用,這些語(yǔ)言也都有相應(yīng)成熟的Web框架,但是請(qǐng)求處理是這些Web框架的核心。知乎問(wèn)答-如何學(xué)習(xí)Web框架 提到Web框架涉及的基本元素,請(qǐng)求處理是學(xué)習(xí)Web框架的首要問(wèn)題。

Flask框架

Flask 是一個(gè)用于 Python 的微型網(wǎng)絡(luò)開(kāi)發(fā)框架。

Flask的‘微’體現(xiàn)在它只提供Web服務(wù)的基本功能,其他的功能是由Flask的擴(kuò)展實(shí)現(xiàn),用戶可以根據(jù)需求應(yīng)用核心擴(kuò)展。它的基本功能依賴(lài)于符合 WSGI 規(guī)范(Web Server Gateway Interface)的 Werkzeug 庫(kù)和模板系統(tǒng) Jinja2
當(dāng)我們通過(guò)URL訪問(wèn)網(wǎng)站時(shí),是向Web服務(wù)器發(fā)送了請(qǐng)求。服務(wù)器會(huì)根據(jù)URL將請(qǐng)求交給相應(yīng)的Web程序處理。所以服務(wù)器與Web應(yīng)用程序的交互需要一定的規(guī)則。而Python專(zhuān)用的規(guī)范是WSGI [PEP-3333定義],文章 WSGI簡(jiǎn)介 給出了簡(jiǎn)單說(shuō)明。

Flask核心功能

Flask涉及到兩個(gè)重要的類(lèi)——Flask和Blueprint[藍(lán)本] 類(lèi)。
flask的應(yīng)用程序需要Flask類(lèi)實(shí)例化才能運(yùn)行,網(wǎng)站的基本配置信息也包含在此類(lèi)中。
實(shí)例化如下:

from flask import Flask
app = Flask(__name__)#__name__程序的文件名,通過(guò)此變量定位資源文件位置

配置如下:

app.config["CONFIGURATION"] = "CONFIGURATION"

Blueprint類(lèi)與Flask類(lèi)似,它能夠更好的組織Web應(yīng)用程序,并能延遲Flask類(lèi)實(shí)例的創(chuàng)建。

1. 路由和請(qǐng)求處理

路由的存在是為了將Web服務(wù)的請(qǐng)求轉(zhuǎn)交給Flask程序?qū)嵗暮瘮?shù)處理,簡(jiǎn)單的說(shuō)處理URL和函數(shù)之間的關(guān)系稱(chēng)為路由。函數(shù)稱(chēng)為視圖函數(shù)。
Flask類(lèi)包含了route裝飾器,通過(guò)初始化Flask類(lèi)注冊(cè)視圖函數(shù)。

無(wú)參數(shù)
@app.route("/")
def index():
    return "

Hellow World

"

當(dāng)訪問(wèn)網(wǎng)站根域名時(shí),會(huì)執(zhí)行index函數(shù),返回值的結(jié)果會(huì)在網(wǎng)頁(yè)中顯示。。

帶參數(shù)

在很多時(shí)候用戶不同,使用的URL不同,帶參數(shù)的路由能夠很好的處理URL中變化的部分。如在網(wǎng)頁(yè)中顯示個(gè)人名字

@app.route("/user/")
def user(name):
    return "

Hello, {!r}

".format(name)

部分是可變部分,name將作為參數(shù)傳遞給視圖函數(shù)。此部分可以指定name 的類(lèi)型,如@app.route("/user/")可指定參數(shù)類(lèi)型
可指定的類(lèi)型有int,float,path(路徑標(biāo)識(shí))

處理GET, POST請(qǐng)求
@app.route("/", methods=["GET", "POST"])
def index():
    pass

當(dāng)網(wǎng)頁(yè)需要處理表單等請(qǐng)求時(shí),需要添加methods,使得視圖函數(shù)能夠處理http請(qǐng)求。methods中的參數(shù)包括了Http協(xié)議中定義的5種動(dòng)作。

響應(yīng)處理
from flask import make_request
@app.route("/"):
    response = make_request("

Cookie

") response.set_cookie("answer","42") return response

響應(yīng)處理中很重要的一部分是處理Http協(xié)議的狀態(tài)碼。Flask默認(rèn)狀態(tài)碼是200。而返回特殊狀態(tài)碼可在返回值中添加,代碼如下:

@app.route("/")
def index():
    return "

Bad Request

", 400 #返回特殊狀態(tài)碼
“"?" + 鍵值對(duì)“ 形式

? 后的鍵值對(duì)由flask提供request對(duì)象處理。假設(shè)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. 異常處理

在瀏覽網(wǎng)頁(yè)時(shí),可能會(huì)遇到一些錯(cuò)誤,flask提供abort函數(shù)拋出錯(cuò)誤,而拋出的異常會(huì)直接返回給Web服務(wù)器。我們也可以自定義處理這些異常。代碼如下:

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", 404
3. 請(qǐng)求鉤子

請(qǐng)求鉤子是指在請(qǐng)求之前或之后所做的處理函數(shù)

函數(shù)名 功能
before_first_request 在處理第一個(gè)請(qǐng)求之前執(zhí)行
before_request 每次請(qǐng)求之前執(zhí)行
after_request 無(wú)異常,每次請(qǐng)求之后執(zhí)行
teardown_request 即使異常,也在請(qǐng)求之后執(zhí)行

請(qǐng)求鉤子函數(shù)與視圖函數(shù)之間通過(guò)g變量共享數(shù)據(jù)。

問(wèn)題

Q1:如何調(diào)試Web應(yīng)用程序?
Q2:如何評(píng)價(jià)Web應(yīng)用程序的性能?
Q3:Web應(yīng)用程序如何做單元測(cè)試?

學(xué)習(xí)資料

《Flask Web 開(kāi)發(fā)》SegmentFault系列文章 - 作者只錄入了前七章內(nèi)容,未涉及實(shí)例開(kāi)發(fā)部分

《Flask Web 開(kāi)發(fā)》中文版 - 建議入手第二版

《Flask Web 開(kāi)發(fā)》作者Blog - 書(shū)中有任何疑問(wèn)可以在文章中搜索

Flask大型教程項(xiàng)目Blog

Flask API文檔

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/37783.html

相關(guān)文章

  • Flask學(xué)習(xí)資源整理

    摘要:學(xué)習(xí)資源中文學(xué)習(xí)大本營(yíng)強(qiáng)烈推薦開(kāi)發(fā)從小白開(kāi)始學(xué)習(xí)資料推薦一些資源好文使用小結(jié)實(shí)例開(kāi)發(fā)博客常用命令打包包中的依賴(lài)包安裝依賴(lài)包擴(kuò)展為應(yīng)用提供編寫(xiě)腳本的功能??梢杂脕?lái)運(yùn)行一個(gè)開(kāi)發(fā)服務(wù)器,也可以與數(shù)據(jù)庫(kù)交互,方便開(kāi)發(fā)。 學(xué)習(xí)資源 Python 中文學(xué)習(xí)大本營(yíng)(Explore Flask強(qiáng)烈推薦) Flask 開(kāi)發(fā)從小白開(kāi)始 cnblog-Flask 學(xué)習(xí)資料 推薦一些Flask資源 Fl...

    KunMinX 評(píng)論0 收藏0
  • Web 開(kāi)發(fā)學(xué)習(xí)筆記(1) --- 搭建你的第一個(gè) Web Server

    摘要:簡(jiǎn)介是一個(gè)輕量級(jí)的框架如果要學(xué)習(xí)開(kāi)發(fā)非常適合作為我們學(xué)習(xí)的起點(diǎn)通過(guò)接下來(lái)的這一些列的博客我們將學(xué)習(xí)如何利用以及其他工具搭建一個(gè)簡(jiǎn)單的網(wǎng)站開(kāi)發(fā)環(huán)境命令如下第一個(gè)首先我們創(chuàng)建一個(gè)文件夾并在其中新建一個(gè)文件接著我們打開(kāi)按照的示例 簡(jiǎn)介 Flask 是一個(gè)輕量級(jí)的 Web 框架, 如果要學(xué)習(xí) Web 開(kāi)發(fā), Flask 非常適合作為我們學(xué)習(xí)的起點(diǎn). 通過(guò)接下來(lái)的這一些列的博客, 我們將學(xué)習(xí)如何...

    calx 評(píng)論0 收藏0
  • flask文檔學(xué)習(xí)筆記1-快速入門(mén)

    摘要:示例如下靜態(tài)路由使用動(dòng)態(tài)變量的路由未指定變量類(lèi)型使用動(dòng)態(tài)變量的路由指定變量類(lèi)型指定的路由變量,可以作為被裝飾的函數(shù)參數(shù)傳入進(jìn)來(lái)。 開(kāi)始決定認(rèn)真的在網(wǎng)上寫(xiě)一些東西,主要原因還是在于希望能提升學(xué)習(xí)效果。雖說(shuō)python寫(xiě)了有幾年,但是web后端框架的確沒(méi)怎么接觸過(guò),買(mǎi)了本狗書(shū)寥寥草草的過(guò)了一遍,發(fā)現(xiàn)很多東西還是理解不深,真的是好記性不如爛筆頭,知識(shí)也要從基礎(chǔ)開(kāi)始,退回來(lái)好好看看官方文檔,再...

    lingdududu 評(píng)論0 收藏0
  • 最終篇:簡(jiǎn)潔易懂,初學(xué)者挑戰(zhàn)學(xué)習(xí)Python編程30天 (五)

    摘要:和是最受歡迎的。虛擬環(huán)境將允許將項(xiàng)目依賴(lài)項(xiàng)與本地機(jī)器依賴(lài)項(xiàng)隔離開(kāi)來(lái)。文件將是項(xiàng)目中的主文件。運(yùn)行后,檢查本地主機(jī)。在中創(chuàng)建一個(gè)名為的文件夾,并創(chuàng)建一個(gè)名為的文件夾。部署創(chuàng)建帳戶為前端和全棧應(yīng)用程序提供免費(fèi)部署服務(wù)。 ...

    1fe1se 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<