欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Flask response響應(yīng)的具體使用

 更新時間:2021年07月15日 11:55:19   作者:憶想不到的暉  
在flask中,想要給前端頁面返回數(shù)據(jù),必須是Response的對象,本文介紹了Flask response響應(yīng)的使用,感興趣的可以了解一下

引言

客戶端發(fā)送 http 請求給 Flask程序,F(xiàn)lask 調(diào)用視圖函數(shù)后,會將其返回值作為響應(yīng)的內(nèi)容。大多情況下,響應(yīng)就是一個簡單的字符串,作為 Html 頁面回送客戶端。
但 http 協(xié)議需要的不僅是作為請求響應(yīng)的字符串。http 響應(yīng)中有一個很重要的部分是狀態(tài)碼,F(xiàn)lask設(shè)為200,代表請求已被成功處理。

response響應(yīng)

元組形式響應(yīng)

如果視圖函數(shù)返回的響應(yīng)還需要使用不同的狀態(tài)碼,那么可以把數(shù)字代碼作為第二個返回值,添加到響應(yīng)文本之后

from flask import Flask

app = Flask(__name__)


# 以元組形式返回響應(yīng)信息
@app.route("/index")
def index():
    #      響應(yīng)體        狀態(tài)碼
    return "index page", 400

視圖函數(shù)返回的響應(yīng)還可以接受第三個參數(shù),響應(yīng)頭也可以繼續(xù)放在后面返回,例如:

from flask import Flask

app = Flask(__name__)


# 以元組形式返回響應(yīng)信息
@app.route("/index")
def index():
    header_dict = {
        "name": "jack",
        "age": 22
    }

    header_list = [("name", "hui"), ("age", 21)]

    #      響應(yīng)體        狀態(tài)碼    響應(yīng)頭
    return "index page", 400, header_dict
    # return "index page", 400, header_list

但響應(yīng)頭信息要用一個字典或列表包裝起來,字典好理解,列表里面則是以元組形式存儲響應(yīng)頭信息。這里返回的只是做個例子,真正返回的時候,要合理設(shè)置響應(yīng)頭信息,例如

header_dict = {
    "Content-Type": " text/html; charset=utf-8",   # 響應(yīng)返回的數(shù)據(jù)類型
    "Set-Cookie": "name=hui; Path=/"        # 響應(yīng)設(shè)置cookie
}
return "index page", 200, header_dict   

瀏覽器開發(fā)者工具查看響應(yīng)信息

切記:以元組形式返回,返回值位置不能夠亂

第一個對應(yīng)響應(yīng)體
第二個對應(yīng)狀態(tài)碼
第三個對應(yīng)響應(yīng)頭

make_response函數(shù)

如果不想返回由1個、2個或3個值組成的元組,F(xiàn)lask視圖函數(shù)還可以返回 Response 對象。make_response 函數(shù)可接受1個、2個或3個參數(shù)(和視圖函數(shù)的返回值一樣),并返回一個Response對象??纯吹降兹绾问褂?/p>

from flask import Flask, make_response

app = Flask(__name__)

# mk_response 設(shè)置響應(yīng)信息
@app.route("/info")
def info():
    resp = make_response("info page")
    resp.status = "666 ithui"
    resp.headers["name"] = "hui"
    resp.headers["age"] = 21
    return resp

注意:make_response() 對象設(shè)置狀態(tài)碼時必須字符串,不要寫成了數(shù)字

返回json格式數(shù)據(jù)

import json
from flask import Flask, make_response

app = Flask(__name__)


@app.route("/json")
def resp_json():
    data = {
        "name": "hui",
        "age": 21
    }

    json_str = json.dumps(data)
    headers = {"Content-Type": "application/json"}
    return json_str, 200, headers

你可以借助 json 模塊進行數(shù)據(jù) json化,但一般返回json數(shù)據(jù)要設(shè)置前端返回的數(shù)據(jù)類型,F(xiàn)lask默認的是text/html,因此我們還需在單獨設(shè)置響應(yīng)體內(nèi)容類型。

由于json格式數(shù)據(jù)在Web開發(fā)中使用頻繁,在 Flask 中專門提供了 jsonify() 函數(shù)進行 json數(shù)據(jù)的響應(yīng)

具體使用如下

from flask import Flask, jsonify

app = Flask(__name__)


@app.route("/json")
def resp_json():
    data = {
        "name": "hui",
        "age": 21
    }
    return jsonify(data)
    # return jsonify(name="jack", age=20)

jsonify()可以接收一個字典,也可以 key-value 形式來構(gòu)造 json 數(shù)據(jù)。這樣就方便許多

其他特殊響應(yīng)

redirect() 重定向

有一種名為重定向的特殊響應(yīng)類型。這種響應(yīng)類型沒有頁面文檔,只告訴瀏覽器一個新地址用以加載新頁面

from flask import Flask, redirect

app = Flask(__name__)

# 自己設(shè)置重定向信息
@app.route('/baidu')
def red_baidu():
    resp = make_response()
    resp.status = "302"
    resp.headers['Location'] = "http://www.baidu.com"
    return resp


# redirect 響應(yīng)重定向
@app.route("/csdn")
def red_csdn():
    csdn_url = "https://blog.csdn.net/qq_43629857"
    return redirect(csdn_url)

重定向的經(jīng)常使用 302 狀態(tài)碼表示,指向的地址由 Location 首部提供。由于使用頻繁,F(xiàn)lask 提供了輔助函數(shù) redirect(),用于生成這種響應(yīng)。

abort() 中斷

abort()接收一個狀態(tài)碼參數(shù)

from flask import Flask, request, abort

app = Flask(__name__)

# abort中斷
# http://127.0.0.1:5000/login?name=hui&pwd=123
@app.route("/login", methods=['GET'])
def login():
    name = request.args.get("name")
    pwd = request.args.get("pwd")
    if name != "hui" or pwd != "123":
        abort(404)

    return "登錄成功"

一般這個 abort() 函數(shù)都會配合錯誤信息處理裝飾器 app.errorhandler() 一起使用,如下:

# 處理404狀態(tài)錯誤
@app.errorhandler(404)
def handle_404_err(err):
    return f"404 錯誤信息 {err}"


# 處理500狀態(tài)錯誤
@app.errorhandler(500)
def handle_500_err(err):
    return f"500 服務(wù)器錯誤 {err}"


# abort中斷
# http://127.0.0.1:5000/login?name=hui&pwd=123
@app.route("/login", methods=['GET'])
def login():
    name = request.args.get("name")
    pwd = request.args.get("pwd")
    if name != "hui" or pwd != "123":
        abort(404)

    return "登錄成功"

源代碼

源代碼已上傳到 Gitee HuiDBK/FlaskBasic - 碼云 - 開源中國 (gitee.com) ,歡迎大家來訪。

到此這篇關(guān)于Flask response響應(yīng)的具體使用的文章就介紹到這了,更多相關(guān)Flask response響應(yīng)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 如何實現(xiàn)在jupyter notebook中播放視頻(不停地展示圖片)

    如何實現(xiàn)在jupyter notebook中播放視頻(不停地展示圖片)

    這篇文章主要介紹了如何實現(xiàn)在jupyter notebook中播放視頻(不停地展示圖片),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • Python遠程SSH庫Paramiko詳細操作

    Python遠程SSH庫Paramiko詳細操作

    paramiko實現(xiàn)了SSHv2協(xié)議(底層使用cryptography),用于連接遠程服務(wù)器并執(zhí)行相關(guān)操作,使用該模塊可以對遠程服務(wù)器進行命令或文件操作,今天通過本文給大家介紹Python遠程SSH庫Paramiko簡介,感興趣的朋友一起看看吧
    2022-05-05
  • Python的NLTK模塊詳細介紹與實戰(zhàn)案例

    Python的NLTK模塊詳細介紹與實戰(zhàn)案例

    自然語言處理庫NLTK在Python中的應(yīng)用廣泛,提供了分詞、詞性標注、句法分析等多種功能,本文介紹了NLTK的核心功能、基本概念以及通過具體實戰(zhàn)案例(如文本分詞、去除停用詞、詞干提取等)展示了其在NLP任務(wù)中的實際應(yīng)用
    2024-09-09
  • 基于scrapy的redis安裝和配置方法

    基于scrapy的redis安裝和配置方法

    今天小編就為大家分享一篇基于scrapy的redis安裝和配置方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • python、PyTorch圖像讀取與numpy轉(zhuǎn)換實例

    python、PyTorch圖像讀取與numpy轉(zhuǎn)換實例

    今天小編就為大家分享一篇python、PyTorch圖像讀取與numpy轉(zhuǎn)換實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • python topN 取最大的N個數(shù)或最小的N個數(shù)方法

    python topN 取最大的N個數(shù)或最小的N個數(shù)方法

    今天小編就為大家分享一篇python topN 取最大的N個數(shù)或最小的N個數(shù)方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • Python導入模塊的3種方式超級詳細講解

    Python導入模塊的3種方式超級詳細講解

    這篇文章主要給大家介紹了關(guān)于Python導入模塊的3種方式,本文介紹了在Python中使用模塊的概念和不同的導入方式,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2023-12-12
  • 簡單了解python裝飾器原理及使用方法

    簡單了解python裝飾器原理及使用方法

    這篇文章主要介紹了簡單了解python裝飾器原理及使用方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-12-12
  • 一篇文章帶你了解python異常基礎(chǔ)

    一篇文章帶你了解python異?;A(chǔ)

    今天小編就為大家分享一篇關(guān)于Python中的異常介紹,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2021-08-08
  • Python調(diào)用C++程序的方法詳解

    Python調(diào)用C++程序的方法詳解

    這篇文章主要介紹了Python調(diào)用C++程序的方法,文中通過示例代碼介紹的詳細,相信對大家具有一定的參考借鑒價值,需要的朋友們下面來一起看看吧。
    2017-01-01

最新評論