[英]python-flask example for ajax
有一段時間我正在嘗試學習如何在Flask中使用Ajax。 在燒瓶的官方網站上有一個例子:
from flask import Flask, jsonify, render_template, request
app = Flask(__name__)
@app.route('/_add_numbers')
def add_numbers():
a = request.args.get('a', 0, type=int)
b = request.args.get('b', 0, type=int)
return jsonify(result=a + b)
@app.route('/')
def index():
return render_template('index.html')
它對我很有用。 但我正在尋找以下計划:
while true:
python應用程序等待請求'增加',它為數字加1並返回它 jQuery部分沒關系,我可以這樣做,但我不知道如何實現python部分:
@app.route('/_inc_number')
def inc_number():
n = request.args.get('n', 0, type=int)
while true:
req = request.args.get('req', 0, type=string)
if req == 'increase':
n = n + 1
return n #It exits the function. how respond without quit?
請解釋一下我的數據如何回來? 我也是Ajax和Flask的新手,我懷疑它不是“真正的”ajax ......是嗎? 如何在燒瓶中實現具有相同功能的簡單功能?
我認為你缺少的是每次客戶請求增加數量時都會有一個獨立的請求。 您的inc_number
處理程序將按如下方式編碼:
@app.route('/_inc_number')
def inc_number():
n = request.args.get('n', 0, type=int)
n = n + 1
return n
然后從jQuery端,每次要增加數量時都必須調用一個獨立的Ajax請求。
請注意,對於這種類型的解決方案,jQuery應用程序是跟蹤計數器當前值的應用程序,它必須隨每個請求將其發送到Flask。 另一種可能性是讓Flask端記住用戶會話中的號碼。 對於這種類型的解決方案,Flask應用程序將具有兩個視圖功能:
from flask import session
# you need to set a SECRET_KEY in configuration, used to sign the user session
@app.route('/set_number')
def set_number():
# store n in the user session
session['n'] = request.args.get('n', 0, type=int)
@app.route('/inc_number')
def inc_number():
session['n'] = session['n'] + 1
return session['n']
有了這個解決方案,現在jQuery可以設置數字,而不必每次調用inc_number
時發送它。
我希望這有幫助。
HTTP請求沒有內存,它們彼此獨立。 這意味着當您的Python應用程序收到請求時,它會執行某些操作,立即發送響應並退出。 這就是HTTP的本質。
如果你想要持久的(比如你的號碼)更多的請求,你需要:
一種非常原始的方法(不應該用於生產系統):
main()
創建一個全局字典(稱為num
main()
index()
:
si
) num[si] = 0
si
作為cookie inc_number()
使用來自cookie的si
(由瀏覽器發回)來增加相應的num[si]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.