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

詳解Python?Flask?API?示例演示(附cookies和session)

 更新時(shí)間:2023年03月16日 09:42:32   作者:大數(shù)據(jù)老司機(jī)  
這篇文章主要為大家介紹了Python?Flask?API?示例演示(附cookies和session)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

一、概述

Python Flask 是一個(gè)輕量級(jí)的 Web 框架,它提供了一個(gè)易于使用的 API 來(lái)創(chuàng)建 Web 應(yīng)用程序。在 Flask 中,我們可以使用 Python 函數(shù)來(lái)定義 Web 應(yīng)用程序的路由和處理程序。

二、常用函數(shù)講解

以下是一些常見(jiàn)的 Python Flask API 函數(shù):

1)Flask() 函數(shù)

這個(gè)函數(shù)是 Flask 應(yīng)用程序的核心,用來(lái)創(chuàng)建一個(gè)新的 Flask 實(shí)例。

from flask import Flask
app = Flask(__name__)

2)route() 函數(shù)

這個(gè)函數(shù)用來(lái)指定路由和請(qǐng)求方法??梢允褂枚鄠€(gè) route() 函數(shù)來(lái)定義多個(gè)路由。

@app.route('/')
def hello_world():
    return 'Hello, World!'

3)jsonify() 函數(shù)

這個(gè)函數(shù)可以將 Python 對(duì)象轉(zhuǎn)換為 JSON 格式的響應(yīng)對(duì)象。

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ù)

這個(gè)函數(shù)用來(lái)渲染模板并返回 HTML 響應(yīng)對(duì)象??梢允褂媚0逡鎭?lái)動(dòng)態(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ù)

這個(gè)函數(shù)可以將請(qǐng)求重定向到另一個(gè) URL。

from flask import redirect
@app.route('/redirect')
def redirect_to_home():
    return redirect('/')

6)url_for() 函數(shù)

這個(gè)函數(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ù)

這個(gè)函數(shù)用來(lái)注冊(cè)一個(gè)函數(shù),在每個(gè)請(qǐng)求之前執(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ù)

這個(gè)函數(shù)用來(lái)注冊(cè)一個(gè)函數(shù),在每個(gè)請(qǐng)求之后執(zhí)行。

@app.after_request
def after_request(response):
    response.headers['X-Frame-Options'] = 'SAMEORIGIN'
    return response

9)abort() 函數(shù)

這個(gè)函數(shù)用于在視圖函數(shù)中引發(fā)異常,并返回一個(gè)錯(cuò)誤響應(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ù)

這個(gè)函數(shù)用于發(fā)送文件作為響應(yīng),可以將文件作為字節(jié)流或者文件路徑來(lái)發(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)

三、常用對(duì)象講解

1)request 對(duì)象

這個(gè)對(duì)象表示客戶端發(fā)出的請(qǐng)求,包含請(qǐng)求頭和請(qǐng)求體等信息??梢允褂?request 對(duì)象來(lái)獲取客戶端發(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 對(duì)象

這個(gè)對(duì)象可以用來(lái)存儲(chǔ)用戶會(huì)話數(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 都是用來(lái)跟蹤用戶狀態(tài)的機(jī)制。

Cookie 是一小段文本數(shù)據(jù),當(dāng)一個(gè)用戶訪問(wèn)你的網(wǎng)站時(shí),服務(wù)器可以通過(guò)設(shè)置 cookie 把一些數(shù)據(jù)存儲(chǔ)在用戶的計(jì)算機(jī)上。當(dāng)用戶再次訪問(wèn)網(wǎng)站時(shí),瀏覽器會(huì)發(fā)送 cookie 數(shù)據(jù)給服務(wù)器,以便服務(wù)器可以使用該數(shù)據(jù)來(lái)識(shí)別用戶。Flask 使用 Flask-Cookie 來(lái)處理 cookies,使用它可以設(shè)置、獲取和刪除 cookies。

Session 是一種在服務(wù)器端存儲(chǔ)的狀態(tài)數(shù)據(jù),與 Cookie 不同,Session 數(shù)據(jù)不會(huì)存儲(chǔ)在用戶的計(jì)算機(jī)上,而是存儲(chǔ)在服務(wù)器端。當(dāng)一個(gè)用戶訪問(wèn)你的網(wǎng)站時(shí),服務(wù)器會(huì)為該用戶創(chuàng)建一個(gè)唯一的 Session ID,并將該 ID 存儲(chǔ)在一個(gè) cookie 中,然后服務(wù)器使用該 Session ID 來(lái)識(shí)別用戶。Flask 使用 Flask-Session 來(lái)處理 Session,使用它可以設(shè)置、獲取和刪除 Session 數(shù)據(jù)。

一般來(lái)說(shuō),Session 更加安全,因?yàn)閿?shù)據(jù)存儲(chǔ)在服務(wù)器端,而且用戶無(wú)法直接修改數(shù)據(jù)。Cookie 的優(yōu)點(diǎn)是可以存儲(chǔ)大量數(shù)據(jù),并且可以在不同的頁(yè)面之間共享。在實(shí)際使用中,開(kāi)發(fā)者可以根據(jù)需要選擇使用 CookieSession。

以下是在 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)建一個(gè)響應(yīng)對(duì)象,然后使用 set_cookie 方法設(shè)置了一個(gè)名為 name,值為 valuecookie。

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 對(duì)象獲取了名為 namecookie 的值,然后將其返回給用戶。

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 對(duì)象設(shè)置了一個(gè)名為 name,值為 value 的 Session,并使用 get 方法獲取了該 Session 的值,然后將其返回給用戶。

需要注意的是,為了使用 Flask-Session,需要在應(yīng)用程序中設(shè)置一個(gè) SECRET_KEY。該密鑰用于加密 Session 數(shù)據(jù),以確保數(shù)據(jù)不被篡改。

以上就是詳解Python Flask API 示例演示(附cookies和session)的詳細(xì)內(nèi)容,更多關(guān)于Python Flask API的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • python中defaultdict字典功能特性介紹

    python中defaultdict字典功能特性介紹

    這篇文章主要介紹了python中defaultdict字典功能特性,defaultdict是普通字典dict的一個(gè)子類。通過(guò)collections庫(kù)的defaultdict()方法創(chuàng)建,下面就對(duì)其功能進(jìn)行詳細(xì)介紹,需要的小伙伴可以參考一下
    2022-02-02
  • 查看TensorFlow checkpoint文件中的變量名和對(duì)應(yīng)值方法

    查看TensorFlow checkpoint文件中的變量名和對(duì)應(yīng)值方法

    今天小編就為大家分享一篇查看TensorFlow checkpoint文件中的變量名和對(duì)應(yīng)值方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-06-06
  • 使用Python編寫(xiě)一個(gè)桌面便簽應(yīng)用

    使用Python編寫(xiě)一個(gè)桌面便簽應(yīng)用

    ChatGPT的編程能力也不差,本文將一步一步提出要求,讓ChatGPT根據(jù)我們的要求,編寫(xiě)出一個(gè)可用的,可打包運(yùn)行的桌面便簽,感興趣的可以了解一下
    2023-06-06
  • python監(jiān)控文件或目錄變化

    python監(jiān)控文件或目錄變化

    這篇文章主要為大家詳細(xì)介紹了python監(jiān)控文件或目錄變化的實(shí)現(xiàn)代碼,感興趣的小伙伴們可以參考一下
    2016-06-06
  • Pytorch模型定義與深度學(xué)習(xí)自查手冊(cè)

    Pytorch模型定義與深度學(xué)習(xí)自查手冊(cè)

    這篇文章主要為大家介紹了Pytorch模型定義與深度學(xué)習(xí)的自查手冊(cè),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • Matplotlib中rcParams使用方法

    Matplotlib中rcParams使用方法

    這篇文章主要介紹了Matplotlib中rcParams使用方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • python實(shí)現(xiàn)桌面氣泡提示功能

    python實(shí)現(xiàn)桌面氣泡提示功能

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)桌面氣泡提示功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • tensorflow實(shí)現(xiàn)將ckpt轉(zhuǎn)pb文件的方法

    tensorflow實(shí)現(xiàn)將ckpt轉(zhuǎn)pb文件的方法

    這篇文章主要介紹了tensorflow實(shí)現(xiàn)將ckpt轉(zhuǎn)pb文件的方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-04-04
  • Python中提取人臉特征的三種方法詳解

    Python中提取人臉特征的三種方法詳解

    這篇文章主要和大家分享三個(gè)Python中提取人臉特征的方法,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Python有一定的幫助,需要的可以參考一下
    2022-05-05
  • Python使用wget實(shí)現(xiàn)下載網(wǎng)絡(luò)文件功能示例

    Python使用wget實(shí)現(xiàn)下載網(wǎng)絡(luò)文件功能示例

    這篇文章主要介紹了Python使用wget實(shí)現(xiàn)下載網(wǎng)絡(luò)文件功能,簡(jiǎn)單介紹了wget安裝以及Python使用wget下載tar格式網(wǎng)絡(luò)文件并進(jìn)行解壓處理相關(guān)操作技巧,需要的朋友可以參考下
    2018-05-05

最新評(píng)論