标签: jsonify

烧瓶倒计时器

我正在使用 Flask 构建一个游戏,其中每一轮都有一个完成该轮的倒计时。我希望时间值每秒减少 1 并且在不重新加载页面的情况下进行更新。倒计时本身使用 time.sleep 等待 1 秒,然后将生成器的下一个值设置为全局变量,该变量通过 jsonify 传递到我的 HTML。但是它不起作用。任何帮助,将不胜感激!

Python:

def countdownGen(t):
    return (t-i for i in range(t))

def countdown(t):
    gen = countdownGen(t)
    while t > 0:
        try:
            globaltimer = next(gen)
            time.sleep(1)
        except StopIteration:
            globaltimer = 0

@app.route('/_timer', methods=['GET'])
def timer():
    global globaltimer
    globaltimer = 60
    countdown(globaltimer)
    return jsonify(result=globaltimer)
Run Code Online (Sandbox Code Playgroud)

HTML / JS:

<script type="text/javascript">
  var intervalID = setInterval(update_values,1000);
  $SCRIPT_ROOT = {{request.script_root|tojson|safe}};
  function update_values() {
    $.getJSON($SCRIPT_ROOT + '/_timer',
    function(data) {
      $('#result').text(data.result);
    });
  };
</script>

<body onload="update_values();">
  <span id="result">?</span> …
Run Code Online (Sandbox Code Playgroud)

html javascript python flask jsonify

6
推荐指数
1
解决办法
4208
查看次数

如何直接将 Flask 的 jsonify 与 FireO Models 等自定义类一起使用?

我正在使用 Flask 版本 2.3.2 和 FireO ORM 2.1.0

FireO 模型不直接兼容 Flask 的 jsonify。这意味着它们默认情况下不可序列化,需要在将它们传递给 jsonify 之前将其转换为字典。

前任:

users_dicts = [user.to_dict() for user in users]
return jsonify(users_dicts), 200

# or 

return jsonify(user.to_dict()), 200
Run Code Online (Sandbox Code Playgroud)

所以我的想法是扩展 FireO 模型或 Flask,这样我就可以这样做:

jsonify(users), 200  # Users is a FireO QueryIterator
jsonify(user), 200   # User is a FireO model
Run Code Online (Sandbox Code Playgroud)

python serialization flask jsonify

2
推荐指数
1
解决办法
938
查看次数

标签 统计

flask ×2

jsonify ×2

python ×2

html ×1

javascript ×1

serialization ×1