ajax 的 python-flask 示例

标签 python ajax flask

一段时间以来,我一直在尝试学习如何将 Ajax 与 Flask 结合使用。 flask官网上有一个例子:

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

它对我很有效。但我正在寻找以下程序:

  1. jQuery 代码向 python 应用程序发送一个初始数字
  2. python 应用程序存储号码并响应“收到:[号码]”
  3. 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……对吗?您将如何在 Flask 中实现具有相同功能的简单函数?

最佳答案

我认为您缺少的是每次客户请求增加数量时都会有一个独立的请求。您的 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 端记住用户 session 中的数字。对于这种类型的解决方案,您的 Flask 应用程序将具有两个 View 函数:

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 时都发送它。

希望对您有所帮助。

关于ajax 的 python-flask 示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18445347/

相关文章:

python - 如何让 QtGui 窗口在屏幕上显示时处理事件?

python - 检查行(列表列表中)的最后一个元素是否在另一个列表中找到的有效方法?

python - Django 的 render_to_string 函数的 Flask 版本是什么?

python-2.7 - 在 models_committed 信号处理程序中的模型中使用 server_default 时出现 Flask SQLAlchemy 事务错误

reactjs - 将多个图像从 python 服务器发送到 react 前端

python - Flask - 函数映射正在覆盖现有端点函数

python SKLearn : Logistic Regression Probabilities

php - CSRF token 不匹配 Laravel ajax 删除数据

html - 允许用户拖放表格行以更改其顺序的最简单方法是什么?

javascript - 行数多的表更新慢