Flask結(jié)合Spinner實(shí)現(xiàn)異步加載的秘訣

小樊
81
2024-09-09 08:46:30

要在 Flask 應(yīng)用中實(shí)現(xiàn)異步加載,可以使用 Spinner 和 AJAX。Spinner 是一個(gè)用于創(chuàng)建和管理異步任務(wù)的庫(kù),而 AJAX 則用于在不重新加載整個(gè)頁(yè)面的情況下從服務(wù)器請(qǐng)求數(shù)據(jù)并更新頁(yè)面內(nèi)容。

以下是如何在 Flask 應(yīng)用中結(jié)合 Spinner 和 AJAX 實(shí)現(xiàn)異步加載的秘訣:

  1. 安裝 Spinner:
pip install spinner
  1. 在 Flask 應(yīng)用中設(shè)置 Spinner:
from flask import Flask, render_template
from spinner import Spinner

app = Flask(__name__)
spinner = Spinner(app)

@app.route('/')
def index():
    return render_template('index.html')

@spinner.task()
def my_async_task():
    # 這里執(zhí)行你的異步任務(wù)
    pass
  1. 創(chuàng)建一個(gè) HTML 模板(例如 templates/index.html):
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
   <title>Flask Async Loading with Spinner</title>
   <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
</head>
<body>
    <h1>Flask Async Loading with Spinner</h1>
   <button id="load-data">Load Data</button>
    <div id="data-container"></div>

   <script>
        $("#load-data").click(function() {
            $.ajax({
                url: '/load-data',
                type: 'GET',
                success: function(data) {
                    $("#data-container").html(data);
                }
            });
        });
    </script>
</body>
</html>
  1. 添加一個(gè)路由來(lái)處理 AJAX 請(qǐng)求:
@app.route('/load-data')
def load_data():
    # 在這里執(zhí)行你的異步任務(wù)并獲取結(jié)果
    result = my_async_task()
    return result
  1. 運(yùn)行 Flask 應(yīng)用:
flask run

現(xiàn)在,當(dāng)用戶(hù)點(diǎn)擊 “Load Data” 按鈕時(shí),將通過(guò) AJAX 發(fā)送請(qǐng)求到 /load-data 路由,執(zhí)行異步任務(wù)并將結(jié)果顯示在頁(yè)面上,而無(wú)需重新加載整個(gè)頁(yè)面。

0