一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - Flask response響應的具體使用

Flask response響應的具體使用

2021-12-14 00:05憶想不到的暉 Python

在flask中,想要給前端頁面返回數據,必須是Response的對象,本文介紹了Flask response響應的使用,感興趣的可以了解一下

引言

客戶端發送 http 請求給 flask程序,flask 調用視圖函數后,會將其返回值作為響應的內容。大多情況下,響應就是一個簡單的字符串,作為 html 頁面回送客戶端。
但 http 協議需要的不僅是作為請求響應的字符串。http 響應中有一個很重要的部分是狀態碼,flask設為200,代表請求已被成功處理。

response響應

元組形式響應

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

?
1
2
3
4
5
6
7
8
9
10
from flask import flask
 
app = flask(__name__)
 
 
# 以元組形式返回響應信息
@app.route("/index")
def index():
    #      響應體        狀態碼
    return "index page", 400

視圖函數返回的響應還可以接受第三個參數,響應頭也可以繼續放在后面返回,例如:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
from flask import flask
 
app = flask(__name__)
 
 
# 以元組形式返回響應信息
@app.route("/index")
def index():
    header_dict = {
        "name": "jack",
        "age": 22
    }
 
    header_list = [("name", "hui"), ("age", 21)]
 
    #      響應體        狀態碼    響應頭
    return "index page", 400, header_dict
    # return "index page", 400, header_list

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

?
1
2
3
4
5
header_dict = {
    "content-type": " text/html; charset=utf-8",   # 響應返回的數據類型
    "set-cookie": "name=hui; path=/"        # 響應設置cookie
}
return "index page", 200, header_dict  

瀏覽器開發者工具查看響應信息

Flask response響應的具體使用

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

第一個對應響應體
第二個對應狀態碼
第三個對應響應頭

make_response函數

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

?
1
2
3
4
5
6
7
8
9
10
11
12
from flask import flask, make_response
 
app = flask(__name__)
 
# mk_response 設置響應信息
@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() 對象設置狀態碼時必須字符串,不要寫成了數字

返回json格式數據

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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 模塊進行數據 json化,但一般返回json數據要設置前端返回的數據類型,flask默認的是text/html,因此我們還需在單獨設置響應體內容類型。

由于json格式數據在web開發中使用頻繁,在 flask 中專門提供了 jsonify() 函數進行 json數據的響應

具體使用如下

?
1
2
3
4
5
6
7
8
9
10
11
12
13
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 形式來構造 json 數據。這樣就方便許多

其他特殊響應

redirect() 重定向

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
from flask import flask, redirect
 
app = flask(__name__)
 
# 自己設置重定向信息
@app.route('/baidu')
def red_baidu():
    resp = make_response()
    resp.status = "302"
    resp.headers['location'] = "http://www.baidu.com"
    return resp
 
 
# redirect 響應重定向
@app.route("/csdn")
def red_csdn():
    csdn_url = "https://blog.csdn.net/qq_43629857"
    return redirect(csdn_url)

重定向的經常使用 302 狀態碼表示,指向的地址由 location 首部提供。由于使用頻繁,flask 提供了輔助函數 redirect(),用于生成這種響應。

abort() 中斷

abort()接收一個狀態碼參數

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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() 函數都會配合錯誤信息處理裝飾器 app.errorhandler() 一起使用,如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 處理404狀態錯誤
@app.errorhandler(404)
def handle_404_err(err):
    return f"404 錯誤信息 {err}"
 
 
# 處理500狀態錯誤
@app.errorhandler(500)
def handle_500_err(err):
    return f"500 服務器錯誤 {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) ,歡迎大家來訪。

到此這篇關于flask response響應的具體使用的文章就介紹到這了,更多相關flask response響應內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://juejin.cn/post/6982450925759627277

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲爱视频 | 日韩精品一区二区三区免费视频 | 亚洲精品免费在线观看 | 亚洲四虎在线 | 公翁的舌尖研磨她的花蒂小说 | 美女扒开奶罩让男人吃奶 | 特级毛片全部免费播放器 | 精品国产自在现线久久 | 91外围| 大肥臀风间由美 中文字幕 大东北chinesexxxx露脸 | 天选之王漫画顾长歌免费阅读 | 日韩一区国产二区欧美三 | 国产精品亚洲午夜一区二区三区 | 干操视频 | 黑帮大佬与我的365天2标清中文 | 日韩国产成人精品视频 | 884hutv四虎永久7777 | 国产三级精品91三级在专区 | 精品国产一区二区三区久 | 天天色视频 | 肥胖老寡妇做性 | 亚洲黄色小视频 | 香蕉免费看一区二区三区 | 欧美一区二区三区精品国产 | 色哟呦 | 日本噜噜影院 | 四虎国产一区 | 欧美a在线观看 | 小SAO货叫大声点妓女 | 日韩精品视频美在线精品视频 | 狠狠色狠狠色综合婷婷tag | 男男playh片在线观看 | les女同h高h喷水 | 成人性用品 | 女人麻豆国产香蕉久久精品 | 希岛爱理aⅴ在线中文字幕 午夜综合网 | 亚洲国产区中文在线观看 | 五月婷婷丁香在线视频 | 激情影院费观看 | 精品久久成人免费第三区 | 王雨纯 羞羞 |