一、基本概念
1. make_response是什麼?
make_response是flask中用來構造HTTP響應的函數,可以將一個字符串、模板或者是一個response對象轉換為一個完整的HTTP響應,同時可以設置cookie、header信息等等。
2. make_response的基本用法
from flask import Flask, make_response
app = Flask(__name__)
@app.route('/')
def hello():
response = make_response('Hello, World!')
response.headers['X-Hello'] = 'World'
return response
這段代碼的作用是訪問首頁時,在頁面上輸出”Hello, World!”,同時在header中增加一個自定義header信息”X-Hello: World”。
3. make_response的參數
make_response(response=None, status=None, headers=None, cookies=None)
response: 需要返回的響應對象,可以是字符串或模板渲染的結果
status: HTTP狀態碼
headers: 響應頭信息
cookies: cookie信息
二、使用場景
1. 設置cookie信息
from flask import make_response
@app.route('/')
def hello():
response = make_response('Hello, World!')
response.set_cookie('username', 'flask')
return response
這段代碼的作用是在訪問頁面時,設置一個名為”username”的cookie,值為”flask”。
2. 渲染模板
from flask import make_response, render_template
@app.route('/')
def hello():
html = render_template('index.html')
response = make_response(html)
return response
這段代碼的作用是訪問首頁時,渲染一個html模板,並將渲染結果封裝成response對象返回。
3. 返迴文件
from flask import make_response, send_from_directory
@app.route('/download/')
def download():
response = make_response(send_from_directory('static', 'file.txt', as_attachment=True))
response.headers["Content-Disposition"] = "attachment; filename=file.txt;"
return response
這段代碼的作用是訪問/download/時,下載static目錄下的”file.txt”文件,並且在響應頭中設置”Content-Disposition”字段,提示瀏覽器將文件保存到本地磁盤。
三、make_response的高級用法
1. 返回json數據
from flask import make_response, jsonify
@app.route('/api/')
def api():
data = {"hello": "world"}
response = make_response(jsonify(data))
return response
這段代碼的作用是訪問/api/時,返回json格式的數據。
2. 設置響應header信息
from flask import make_response
@app.route('/')
def hello():
response = make_response('Hello, World!')
response.headers['X-Hello'] = 'World'
return response
這段代碼的作用是訪問首頁時,在頁面中輸出”Hello, World!”,並在header中增加一個自定義header信息”X-Hello: World”。
3. 設置響應狀態碼
from flask import make_response
@app.route('/')
def hello():
response = make_response('Hello, World!')
response.status_code = 404
return response
這段代碼的作用是訪問首頁時,返回HTTP狀態碼為404的響應報文。
四、總結
本文主要從make_response的基本概念、使用場景、高級用法等多個方面進行了詳細闡述。在實際的flask開發中,合理使用make_response可以極大地提高開發效率,為項目的開發和維護提供更多的便利。
原創文章,作者:RGFMN,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/331379.html