如何在不使用 AJAX 的情况下更新烧瓶模板变量

How to update a flask template variable without using AJAX

我有一个 flask 模板,我需要更新模板中的一个变量(render_template('file.html', somevar='hello')。当 somevar 发生变化时,我希望它在模板中也发生变化。你会怎么做?

main.py:

from flask import Flask, render_template
app = Flask('app')
somevar = 'somestring'
@app.route('/')
def hello_world():
  return render_template('index.html', somevar=somevar)

@app.route('/alter')
def alter():
  global somevar
  somevar = 'anotherstring'
  return 'completed'

app.run(host='0.0.0.0', port=8080)
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  {{ somevar }}
</body>
</html>

/alter 端点被命中时,我希望 index.html 更新而不重新加载它。 我已经试过了AJAX,我想知道没有它有没有什么办法。

没有 Ajax 这是不可能的。

但是你也可以return更新后的HTML:

from flask import Flask, render_template
app = Flask('app')
somevar = 'somestring'
@app.route('/')
def hello_world():
  return render_template('index.html', somevar=somevar)

@app.route('/alter')
def alter():
  global somevar
  somevar = 'anotherstring'
  return render_template('index.html', somevar=somevar)

app.run(host='0.0.0.0', port=8080)