詳解Python?Flask?API?示例演示(附cookies和session)
一、概述
Python Flask 是一個輕量級的 Web 框架,它提供了一個易于使用的 API 來創(chuàng)建 Web 應(yīng)用程序。在 Flask 中,我們可以使用 Python 函數(shù)來定義 Web 應(yīng)用程序的路由和處理程序。
二、常用函數(shù)講解
以下是一些常見的 Python Flask API 函數(shù):
1)Flask() 函數(shù)
這個函數(shù)是 Flask 應(yīng)用程序的核心,用來創(chuàng)建一個新的 Flask 實例。
from flask import Flask app = Flask(__name__)
2)route() 函數(shù)
這個函數(shù)用來指定路由和請求方法。可以使用多個 route()
函數(shù)來定義多個路由。
@app.route('/') def hello_world(): return 'Hello, World!'
3)jsonify() 函數(shù)
這個函數(shù)可以將 Python 對象轉(zhuǎn)換為 JSON 格式的響應(yīng)對象。
from flask import jsonify @app.route('/users') def get_users(): users = [ {'name': 'Alice', 'age': 25}, {'name': 'Bob', 'age': 30}, {'name': 'Charlie', 'age': 35} ] return jsonify(users)
4)render_template() 函數(shù)
這個函數(shù)用來渲染模板并返回 HTML 響應(yīng)對象??梢允褂媚0逡鎭韯討B(tài)生成 HTML。
from flask import render_template @app.route('/profile/<username>') def profile(username): return render_template('profile.html', name=username)
5)redirect() 函數(shù)
這個函數(shù)可以將請求重定向到另一個 URL。
from flask import redirect @app.route('/redirect') def redirect_to_home(): return redirect('/')
6)url_for() 函數(shù)
這個函數(shù)用于生成 URL,可以使用視圖函數(shù)的名稱作為參數(shù)。
from flask import url_for @app.route('/profile/<username>') def profile(username): return f'Hello, {username}! Your profile URL is {url_for("profile", username=username)}.'
7)before_request() 函數(shù)
這個函數(shù)用來注冊一個函數(shù),在每個請求之前執(zhí)行。
@app.before_request def before_request(): if 'user_id' not in session and request.endpoint not in ['login', 'static']: return redirect(url_for('login'))
8)after_request() 函數(shù)
這個函數(shù)用來注冊一個函數(shù),在每個請求之后執(zhí)行。
@app.after_request def after_request(response): response.headers['X-Frame-Options'] = 'SAMEORIGIN' return response
9)abort() 函數(shù)
這個函數(shù)用于在視圖函數(shù)中引發(fā)異常,并返回一個錯誤響應(yīng)。
from flask import abort @app.route('/users/<int:user_id>') def get_user(user_id): user = User.query.get(user_id) if user is None: abort(404) return jsonify(user.to_dict())
10)send_file() 函數(shù)
這個函數(shù)用于發(fā)送文件作為響應(yīng),可以將文件作為字節(jié)流或者文件路徑來發(fā)送。
from flask import send_file @app.route('/download') def download_file(): file_path = '/path/to/file' return send_file(file_path, as_attachment=True)
三、常用對象講解
1)request 對象
這個對象表示客戶端發(fā)出的請求,包含請求頭和請求體等信息??梢允褂?request
對象來獲取客戶端發(fā)送的數(shù)據(jù)。
from flask import request @app.route('/login', methods=['POST']) def login(): username = request.form['username'] password = request.form['password'] return f'Hello, {username}! Your password is {password}.'
2)session 對象
這個對象可以用來存儲用戶會話數(shù)據(jù),例如用戶 ID 等。
from flask import session @app.route('/login', methods=['POST']) def login(): username = request.form['username'] password = request.form['password'] if username == 'admin' and password == 'password': session['user_id'] = 1 return redirect('/') else: return 'Invalid username or password.'
四、Flask 中的 cookies 與 session
1)cookies 與 session 的介紹與區(qū)別
在 Flask 中,Cookies 和 Session 都是用來跟蹤用戶狀態(tài)的機(jī)制。
Cookie
是一小段文本數(shù)據(jù),當(dāng)一個用戶訪問你的網(wǎng)站時,服務(wù)器可以通過設(shè)置 cookie
把一些數(shù)據(jù)存儲在用戶的計算機(jī)上。當(dāng)用戶再次訪問網(wǎng)站時,瀏覽器會發(fā)送 cookie
數(shù)據(jù)給服務(wù)器,以便服務(wù)器可以使用該數(shù)據(jù)來識別用戶。Flask 使用 Flask-Cookie 來處理 cookies
,使用它可以設(shè)置、獲取和刪除 cookies
。
Session
是一種在服務(wù)器端存儲的狀態(tài)數(shù)據(jù),與 Cookie
不同,Session
數(shù)據(jù)不會存儲在用戶的計算機(jī)上,而是存儲在服務(wù)器端。當(dāng)一個用戶訪問你的網(wǎng)站時,服務(wù)器會為該用戶創(chuàng)建一個唯一的 Session ID
,并將該 ID
存儲在一個 cookie
中,然后服務(wù)器使用該 Session ID
來識別用戶。Flask 使用 Flask-Session
來處理 Session
,使用它可以設(shè)置、獲取和刪除 Session
數(shù)據(jù)。
一般來說,Session
更加安全,因為數(shù)據(jù)存儲在服務(wù)器端,而且用戶無法直接修改數(shù)據(jù)。Cookie
的優(yōu)點是可以存儲大量數(shù)據(jù),并且可以在不同的頁面之間共享。在實際使用中,開發(fā)者可以根據(jù)需要選擇使用 Cookie
或 Session
。
以下是在 Flask 中使用 Cookies 和 Session 的示例:
2)示例講解
1、使用 Flask-Cookie 設(shè)置 Cookie
from flask import Flask, make_response app = Flask(__name__) @app.route('/') def index(): response = make_response('Hello, World!') response.set_cookie('name', 'value') return response if __name__ == '__main__': app.run()
在上面的例子中,我們使用 Flask 的 make_response
函數(shù)創(chuàng)建一個響應(yīng)對象,然后使用 set_cookie
方法設(shè)置了一個名為 name,值為 value
的 cookie
。
2、使用 Flask-Cookie 獲取 Cookie
from flask import Flask, request app = Flask(__name__) @app.route('/') def index(): name = request.cookies.get('name') return f'Hello, {name}!' if __name__ == '__main__': app.run()
在上面的例子中,我們使用 Flask 的 request
對象獲取了名為 name
的 cookie
的值,然后將其返回給用戶。
3、使用 Flask-Session 設(shè)置和獲取 Session
from flask import Flask, session app = Flask(__name__) app.config['SECRET_KEY'] = 'your_secret_key' @app.route('/') def index(): session['name'] = 'value' name = session.get('name') return f'Hello, {name}!' if __name__ == '__main__': app.run()
在上面的例子中,我們使用 Flask 的 session 對象設(shè)置了一個名為 name,值為 value 的 Session,并使用 get 方法獲取了該 Session 的值,然后將其返回給用戶。
需要注意的是,為了使用 Flask-Session
,需要在應(yīng)用程序中設(shè)置一個 SECRET_KEY
。該密鑰用于加密 Session
數(shù)據(jù),以確保數(shù)據(jù)不被篡改。
以上就是詳解Python Flask API 示例演示(附cookies和session)的詳細(xì)內(nèi)容,更多關(guān)于Python Flask API的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
python實現(xiàn)優(yōu)雅的打印json格式文本
這篇文章主要介紹了python實現(xiàn)優(yōu)雅的打印json格式文本方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-08-08Python爬蟲之Selenium下拉框處理的實現(xiàn)
這篇文章主要介紹了Python爬蟲之Selenium下拉框處理的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12pyqt5教程QGraphicsScene及QGraphicsView使用基礎(chǔ)
這篇文章主要為大家介紹了pyqt5教程中QGraphicsScene及QGraphicsView使用基礎(chǔ),有序要的朋友可以借鑒參考下,希望能夠有所幫助2021-10-10爬蟲訓(xùn)練前端基礎(chǔ)Bootstrap5排版表格圖像
這篇文章主要為大家介紹了爬蟲訓(xùn)練前端基礎(chǔ)Bootstrap5排版表格圖像,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02keras 模型參數(shù),模型保存,中間結(jié)果輸出操作
這篇文章主要介紹了keras 模型參數(shù),模型保存,中間結(jié)果輸出操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-07-07利用Jmeter實現(xiàn)在請求param和body里面加入隨機(jī)參數(shù)
本文介紹了如何使用jemeter實現(xiàn)新增接口壓力測試中的隨機(jī)參數(shù)生成,首先,使用函數(shù)助手對話框生成隨機(jī)數(shù),然后將生成的隨機(jī)數(shù)作為參數(shù)放入請求中,無論請求格式是json、xml還是text等,如果param和body同時存在并需要隨機(jī)生成參數(shù),可以把參數(shù)寫入到請求地址中2024-10-10