Flask框架響應(yīng)、調(diào)度方法和藍(lán)圖操作實(shí)例分析
本文實(shí)例講述了Flask框架響應(yīng)、調(diào)度方法和藍(lán)圖操作。分享給大家供大家參考,具體如下:
響應(yīng)
像現(xiàn)在大部分的互聯(lián)網(wǎng)應(yīng)用用的數(shù)據(jù)傳輸格式都是JSON,當(dāng)用戶(hù)訪問(wèn)一個(gè)URL,我們?nèi)绾瓮ㄟ^(guò)Flask返回JSON的響應(yīng):
普通做法:
@app.route("/") def showInfo(): return jsonify({"name":"老王","age":18})
當(dāng)我們的應(yīng)用有大量的URL時(shí),我們需要每次都用jsonify轉(zhuǎn)換一下,不免覺(jué)得繁瑣。此時(shí)會(huì)有人說(shuō),可以定義一個(gè)公共方法,將轉(zhuǎn)換都在這個(gè)方法中實(shí)現(xiàn)就好了。這也不失為一個(gè)可行的方法,還有一種方法讓Flask自動(dòng)幫我們做這些工作:
from flask import Response,jsonify class JSONResponse(Response): @classmethod def force_type(cls,response,environ=None): if isinstance(response,dict): response = jsonify(response) return super(JSONResponse,cls).force_type(response,environ) app.response_class = JSONResponse @app.route("/") def showInfo(): return {"name":"老王","age":18}
調(diào)度方法
flask.views.MethodView
對(duì)每個(gè)HTTP方法執(zhí)行不同的函數(shù)(映射到對(duì)應(yīng)方法的小寫(xiě)的同名方法上),這對(duì)RESTful API尤其有用。
from flask.views import MethodView class UserAPI(MethodView): def get(self): return jsonify({"method":"get"}) def post(self): return jsonify({"method":"post"}) app.add_url_rule("/user",view_func=UserAPI.as_view("userview"))
當(dāng)用戶(hù)使用GET或POST請(qǐng)求http://localhost:5000/user時(shí),會(huì)執(zhí)行UserAPI中相應(yīng)get,post函數(shù)。
藍(lán)圖
藍(lán)圖實(shí)現(xiàn)了應(yīng)用的模塊化,使用藍(lán)圖讓?xiě)?yīng)用層次清晰,開(kāi)發(fā)者可以更容易的開(kāi)發(fā)和維護(hù)項(xiàng)目。藍(lán)圖通常作用于相同的URL前綴。比如/user/item、/user/info這樣的地址,都以/user開(kāi)頭,那么他們就可以放在一個(gè)模塊中??慈缦吕?
### xxx.py from flask import Blueprint user = Blueprint("user",__name__) @user.route("/info") def info(): return "User Info" #######分割線####### from xxx import user app.register_blueprint(user,url_prefix="/user")
當(dāng)用戶(hù)請(qǐng)求http://localhost:5000/user/info時(shí),就會(huì)返回”User Info”信息,效果與Django中的include類(lèi)似。
希望本文所述對(duì)大家基于Flask框架的Python程序設(shè)計(jì)有所幫助。
相關(guān)文章
詳解python實(shí)現(xiàn)數(shù)據(jù)歸一化處理的方式:(0,1)標(biāo)準(zhǔn)化
這篇文章主要介紹了詳解python實(shí)現(xiàn)數(shù)據(jù)歸一化處理的方式:(0,1)標(biāo)準(zhǔn)化,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07Python中驚艷的一行代碼簡(jiǎn)潔強(qiáng)大表達(dá)力技巧實(shí)例
在Python中,語(yǔ)言的設(shè)計(jì)理念之一是簡(jiǎn)潔優(yōu)雅,這使得我們能夠用一行代碼完成一些令人驚嘆的任務(wù),本文將分享一些在一行代碼中展現(xiàn)出Python強(qiáng)大表達(dá)力的示例,涵蓋各種領(lǐng)域的實(shí)用技巧2024-01-01解決pytorch 的state_dict()拷貝問(wèn)題
這篇文章主要介紹了解決pytorch 的state_dict()拷貝問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-03-03Python選擇網(wǎng)卡發(fā)包及接收數(shù)據(jù)包
今天小編就為大家分享一篇關(guān)于Python選擇網(wǎng)卡發(fā)包及接收數(shù)據(jù)包,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-04-04numpy中hstack vstack stack concatenate函數(shù)示例詳解
這篇文章主要為大家介紹了numpy中hstack vstack stack concatenate函數(shù)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02一文詳解如何用GPU來(lái)運(yùn)行Python代碼
前幾天搗鼓了一下Ubuntu,正是想用一下我舊電腦上的N卡,可以用GPU來(lái)跑代碼,體驗(yàn)一下多核的快樂(lè),感興趣的小伙伴快跟隨小編一起了解一下吧2023-02-02python3 字符串知識(shí)點(diǎn)學(xué)習(xí)筆記
字符串是 Python 中最常用的數(shù)據(jù)類(lèi)型。我們可以使用引號(hào)('或")來(lái)創(chuàng)建字符串2020-02-02